C ++缓冲文件读取

时间:2011-11-02 06:22:42

标签: c++ ifstream bigdata

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

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

1 个答案:

答案 0 :(得分:5)

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

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包含文件的内容。