【发布时间】:2016-07-15 06:10:31
【问题描述】:
据我所知,要分析一个文本文件,首选方法是逐行分析,既简单又高效。
但是,当我们处理一个包含所有文本的大文件时,getline() 函数肯定根本没有效率。我想知道是否有任何其他有效的方法来分析这个巨大的文件?
我唯一想到的就是将这条大行存储到一个字符串变量中,然后将其剪切为单字。但这听起来仍然根本没有效率。
请帮忙。谢谢!
【问题讨论】:
-
"
getline()函数绝对不会有效率。"你怎么知道?您必须对其进行分析,并确定它是否足以满足您的目的。 C++ 标准库经过高度优化,您可能会感到惊喜。 -
您实际上想解决什么具体问题?
-
Das:我收回那句话。我想我只是在寻找比 getline() 更好的方法。这是最直接和最标准的方法,但我认为应该有比它更好的方法。
-
Barry:这个问题涉及一个大小超过600MB的txt文件。我被要求在文件中找到特定的模式(例如,所有大写字母的单词)并将它们打印出来。这么大的文件,getline() 函数似乎真的很慢,所以我试图找到一种更好的方法来遍历文件并找到我想要的模式。
-
魔鬼在细节中,这就是为什么显示文件的前几百个字符可以帮助人们提供有用的建议。例如,适合的单词是空格分隔的,您可以简单地使用
while (file_stream >> next_word_string) ...。如果有逗号或其他分隔符,或者您认为包含空格的“单词”(例如“冰淇淋”),那么您也需要更高级的处理。
标签: c++ performance file-io getline