我有一个std :: bitset,我想写一个文件,一点一滴,但当然fstream的写入功能不支持这个。我想不出另一种方法,除了使用字符串将每个8位组转换为char并写入...
有人知道一个好方法吗?
答案 0 :(得分:2)
尝试:
#include <bitset>
#include <fstream>
int main() {
using namespace std;
const bitset<12> x(2730ul);
cout << "x = " << x << endl;
ofstream ofs("C:\\test.txt"); // write as txt
if (ofs) {
// easy way, use the stream insertion operator
ofs << x << endl;
// using fstream::write()
string s = x.to_string();
ofs.write(s.c_str(), s.length());
}
return 0;
}
答案 1 :(得分:0)
嗯,“一种”做法就是使用string作为序列化方法。有一个bitset构造函数接受一个字符串参数,并且有一个返回一个的to_string()成员函数。还有&lt;&lt;和&gt;&gt;帮助操作符使用utlize构造函数和to_string()函数进行流插入和提取。根据您的要求,这可能对您有用。
在一个应用程序中,这对我们来说不够紧凑,所以我们最终编写了一个类似于bitset的类(具有相同的接口),但它也可以序列化为字节流,这意味着它具有返回指针的函数到构成它的底层字节数组。如果您有几个实现的源代码,那么编写起来并不是非常困难。