如何将bitset数据写入文件?

时间:2009-04-22 17:41:07

标签: c++ fstream bitset

我有一个std :: bitset,我想写一个文件,一点一滴,但当然fstream的写入功能不支持这个。我想不出另一种方法,除了使用字符串将每个8位组转换为char并写入...

有人知道一个好方法吗?

2 个答案:

答案 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的类(具有相同的接口),但它也可以序列化为字节流,这意味着它具有返回指针的函数到构成它的底层字节数组。如果您有几个实现的源代码,那么编写起来并不是非常困难。