如何使用C++stl一次将二进制文件的块加载到向量中



正如问题所示,如何使用C++一次将二进制文件块加载到向量中?我想用ifstream_iterator来解决这个问题,但我不熟悉。有人能给我一些代码,一次将200个数据从一个文件复制到一个向量中吗?请注意,我使用的是.bin文件,所以我的数据必须是二进制的。

根据参考:

读取字符时,std::istream_iterator跳过空白默认(除非使用std::noskipws或等效程序禁用(,而std::istreambuf_editor没有。此外std::istreambuf_editor更高效,因为它避免了每年建造和摧毁一次哨兵物体的开销性格

ifstream_iterator不是用来读取二进制文件的,我们需要使用istreambuf_iterator,并打开带有std::ios::in | std::ios::binary标志的文件

示例代码可能如下所示:

#include <fstream>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
int main(int argc, char* argv[]) {
std::string fname{"you_file"};
std::ifstream ifs(fname, std::ios::in | std::ios::binary);
std::istreambuf_iterator<char> iter(ifs);
std::vector<char> vec(iter, std::istreambuf_iterator<char>{});
std::cout << "bytes:" << vec.size() << std::endl;
return 0;
}

如果有多个文件要读取,那么将代码片段包装到一个函数中,并用循环调用它。

相关内容

最新更新