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

时间:2016-03-28 01:28:59

标签: c++ performance file-io getline

据我所知,为了分析文本文件,首选方法是逐行分析,这很容易和有效。

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

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

请帮忙。谢谢!

2 个答案:

答案 0 :(得分:1)

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

或者,也可以使用特定于操作系统的方法。在Linux上,可以使用文件的只读mmap()来轻松浏览它,而且不用担心。

答案 1 :(得分:1)

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

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

至于表现 - 你只需要试试你的情况。