在 C++ 中不使用 getline() 读取文本文件

Reading a text file without using getline() in C++

据我了解,要分析一个文本文件,首选方法是逐行分析,既简单又高效。

然而,当我们处理一个包含所有文本在一行中的巨大文件时,getline() 函数肯定根本不会有效。我想知道是否有任何其他有效的方法来分析这个巨大的文件?

我唯一想到的就是将这一大行存储到一个字符串变量中,然后将其切割成单字。但这听起来仍然效率不高。

请帮忙。谢谢!

您可以使用 std::istream::get(char *, std::streamsize) 将大块文件读入适当大的缓冲区,然后逐个大块地处理文件。

或者,也可以使用特定于操作系统的方法。在 Linux 上,可以使用文件的只读 mmap() 来浏览它,而无需大惊小怪。

getline 基本上只是处理换行符或 other 字符的快捷方式!所以如果你的文件有一些分隔符(例如分号),你可以使用

std::getline(fileStream, stringToSave, ';');

至于性能 - 您只需尝试适合您的情况即可。