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

标签 c++ performance file-io getline

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

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

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

请帮忙。谢谢!

最佳答案

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

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

关于c++ - 在 C++ 中不使用 getline() 读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36254632/

相关文章:

c++ - cuda 中的双调排序错误排序了一些值

c++ - 在 C++ 性能问题中使用 getter 返回映射

database - 提高 web2py 性能 - 数据库和 apache

c# - 分隔列表的更快方法

android - 在 Android 上将大文件转换为字节数组

c++ - 异常处理

c++ - 两个不同的指针数组,但它们都指向同一个地址

选择与表值函数连接中的 Oracle 标量函数

c - 从文件中读取 float

c++ - 如何在 C++ 中删除一行?