据我所知,为了分析文本文件,首选方法是逐行分析,这很容易和有效。
但是,当我们处理一个包含一行中所有文本的大文件时,getline()函数肯定不会有效。我想知道是否还有其他有效的方法来分析这个巨大的文件?
我唯一想到的是将这条巨大的行存储到一个字符串变量中,然后将其剪切为单个单词。但这仍然听起来效率不高。
请帮忙。谢谢!
答案 0 :(得分:1)
您可以使用std::istream::get(char *, std::streamsize)
将大块文件读入适当大的缓冲区,然后以大块方式逐个处理文件。
或者,也可以使用特定于操作系统的方法。在Linux上,可以使用文件的只读mmap()
来轻松浏览它,而且不用担心。
答案 1 :(得分:1)
getline
基本上只是处理换行符的快捷方式 - 或其他字符!因此,如果您的文件有一些分隔符(例如分号),则可以使用
std::getline(fileStream, stringToSave, ';');
至于表现 - 你只需要试试你的情况。