C++ 缓冲文件读取

Posted

技术标签:

【中文标题】C++ 缓冲文件读取【英文标题】:C++ buffered file reading 【发布时间】:2011-11-02 06:22:42 【问题描述】:

我想知道逐行读取大型文本文件(例如,std::getline 或 fgets)是否可以使用预定义的读取缓冲区大小进行缓冲,或者必须使用特殊的字节函数?

我的意思是通过 I/O 操作数优化读取非常大的文件(例如,一次从 HDD 读取 32 MB)。当然我可以手工制作缓冲读取,但我认为标准文件流有这种可能性。

【问题讨论】:

编写自定义函数。创新就是这样来的:) 【参考方案1】:

既不是逐行的,也不是特殊的字节函数。相反,以下应该做你的工作:

std::ifstream file("input.txt");
std::istream_iterator<char> begin(file), end;

std::vector<char> buffer(begin, end); //reading the file is done here!
//use buffer. it contains the content of the file!

你已经完成了,buffer 包含文件的内容。

【讨论】:

以上是关于C++ 缓冲文件读取的主要内容,如果未能解决你的问题,请参考以下文章

C++ 以缓冲速率从 STDIN 读取输入

读取控制台缓冲区/输出 C++

用于缓冲 c++ 的 zip 文件

InternetReadFile 填充缓冲区,但返回读取的零字节

Android C++系列:Linux文件IO操作

使用 Visual C++ 的地址清理程序:忽略读取缓冲区溢出,同时仍捕获写入缓冲区溢出