【发布时间】:2011-12-04 23:32:09
【问题描述】:
我将如何使用 STL 算法做到这一点?
std::ifstream file(filename);
std::vector<unsigned char> buf;
for(auto file_it = std::istreambuf_iterator<char>(file); file_it != std::istreambuf_iterator<char>() && buf.size() < 2048; ++file_it)
buf.push_back(*file_it);
注意buf.size() < 2048。
例如如果我执行以下操作,并且文件小于 2048 字节,会发生什么情况?
std::copy_n(std::istreambuf_iterator<char>(file), 2048, std::back_inserter(buf));
【问题讨论】:
-
如果文件变大了怎么办?其余部分是否被丢弃,或者您是否需要一个迭代器来开始仍待读取的部分?
-
一旦读取了所需的字节数,ifstream 就会被丢弃。
-
这开启了使用单独的迭代器而不是算法的可能性。