在C++中不使用getline()读取文本文件
Reading a text file without using getline() in C++
根据我所学到的,为了分析文本文件,go to方法是逐行分析,这既简单又高效。
然而,当我们处理一个包含所有文本的大文件时,getline()函数肯定根本没有效率。我想知道是否有其他有效的方法来分析这个巨大的文件?
我唯一想做的就是将这条巨大的行存储到一个字符串变量中,然后将其剪切为单个单词。但这听起来仍然毫无效率。
请帮忙。非常感谢。
您可以使用std::istream::get(char *, std::streamsize)
将文件的大块读取到适当大的缓冲区中,然后以大块的形式逐段处理文件。
或者,也可以使用特定于操作系统的方式。在Linux上,文件的只读mmap()
可以用来遍历它,而不需要太多麻烦。
getline
基本上只是处理换行符或其他字符的快捷方式!因此,如果你的文件有一些分隔符(例如分号),你可以使用
std::getline(fileStream, stringToSave, ';');
至于性能,你只需要尝试一下适合你的情况。
相关文章:
- 将从格式化文本文件读取的文本数据存储到链表
- 读取字符串文本输入以创建 2D 矢量
- 需要从存档中读取一行文本.txt直到找到"hhh",然后转到下一行
- 反转从控制台读取的文本
- 高效读取 3MB 文本文件,包括解析
- C++程序在 freopen 中读取大文本后停止工作
- C++忽略使用字符串流进行读取的文本文件中的空白
- 读取大量文本/文本文件的更快方法?
- 使用 std::ifstream 读取 ASCII 文本文件C++
- 如何读取从文本文件到几个数组的不同类型的数据?C
- 使用标准C++无线流读取UTF-8文本并转换为UTF-16
- 从二进制文件中抓取文本时,为什么 xdg_vtnr=8 是我的结果
- 视觉读取列文本数据并在C++中放入 3D 数组
- C++在同一函数中读取各种文本文件
- 从进程内存中读取的文本块中丢弃解析的行
- 读取长文本文件时程序崩溃 - "*.exe has stopped working"
- IO:从一个C++程序和另一个Java程序同时写入和读取同一个文本文件
- OpenCV,在显示图像时读取用户文本输入(使用 waitKey)
- 如何逐行枚举从文件中读取的文本,并找到 C 中字符和单词最多的行
- P/Invoke in ASP.NET (从 dll 读取/写入文本文件)