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

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

本文关键字:读取 取文本 文件 getline C++      更新时间:2023-10-16

根据我所学到的,为了分析文本文件,go to方法是逐行分析,这既简单又高效。

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

我唯一想做的就是将这条巨大的行存储到一个字符串变量中,然后将其剪切为单个单词。但这听起来仍然毫无效率。

请帮忙。非常感谢。

您可以使用std::istream::get(char *, std::streamsize)将文件的大块读取到适当大的缓冲区中,然后以大块的形式逐段处理文件。

或者,也可以使用特定于操作系统的方式。在Linux上,文件的只读mmap()可以用来遍历它,而不需要太多麻烦。

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

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

至于性能,你只需要尝试一下适合你的情况。