将二进制文件读入位集或向量<bool>

Reading a Binary File into a bitset or vector<bool>

本文关键字:lt bool gt 向量 二进制文件      更新时间:2023-10-16

如何将二进制文件读取到bitsetvector<bool> ?二进制文件的长度会有所不同。有更好的容器吗?虽然我是一个有经验的程序员,但我对c++还是个新手。

如果文件很大,为什么要一次读取,将整个文件放入内存?

你可以每次读一小段。大小由size在这个函数中决定:

file.read(buff, size)

buff是char的数组时

我很抱歉,但你不能最简单的读取/保存矢量文件。详情请参阅此处和此处

使用谷歌,它很有帮助…

你在问题中没有给出太多你想做的事情的背景。但这里有一个快速的& &;龌龊的做法:

#include <iterator>
#include <fstream>
#include <vector>
#include <assert.h>
using namespace std;
const char *filename = "foo.bar";
int main()
{
  vector<bool> v;
  ifstream binary_file(filename, ios::binary);
  assert(binary_file);
  copy(istream_iterator<unsigned char>(binary_file),
       istream_iterator<unsigned char>(),
       back_insert_iterator< vector<bool> >(v));
}

将零字节''字符读入向量将为假。其他被读入的字节将被视为真值。