正如问题所示,如何使用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;
}
如果有多个文件要读取,那么将代码片段包装到一个函数中,并用循环调用它。