将二进制文件读入bitset或vector <bool> </bool>

时间:2011-12-05 02:13:11

标签: c++ binary bitset

如何将二进制文件读入bitsetvector<bool>?二进制文件的长度会有所不同。有更好的容器吗?虽然我是程序员,但我是C ++的新手。

2 个答案:

答案 0 :(得分:2)

如果文件很大,为什么要读一遍,整个文件进入内存?

每次都可以阅读一小段内容。大小由此函数中的 size 决定:

file.read(buff, size)

buff 是char的数组时。

对不起,但你不能简单地读取/保存矢量到文件。 有关详情see herehere

使用谷歌,这非常有帮助......

答案 1 :(得分:-1)

您没有提供太多关于您在问题中尝试做什么的背景信息。但这里有一个快速&amp;肮脏的方式:

#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));
}

将零字节'\ 0'字符读入向量将为false。读入的任何其他字节都将被视为true。