如何将二进制文件读入bitset
或vector<bool>
?二进制文件的长度会有所不同。有更好的容器吗?虽然我是程序员,但我是C ++的新手。
答案 0 :(得分:2)
如果文件很大,为什么要读一遍,整个文件进入内存?
每次都可以阅读一小段内容。大小由此函数中的 size 决定:
file.read(buff, size)
当 buff 是char的数组时。
对不起,但你不能简单地读取/保存矢量到文件。 有关详情see here和here。
使用谷歌,这非常有帮助......
答案 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。