C++ 如何将位集数据写入文件?

C++ 如何将位集数据写入文件?,c++,fstream,bitset,C++,Fstream,Bitset,我有一个std::bitset,我想一点一点地写入文件,但fstream的write函数当然不支持这一点。除了使用字符串将每个8位组转换为一个字符并写入外,我想不出其他方法 有人知道一个好方法吗?试试: #include <bitset> #include <fstream> int main() { using namespace std; const bitset<12> x(2730ul); cout << "x

我有一个std::bitset,我想一点一点地写入文件,但fstream的write函数当然不支持这一点。除了使用字符串将每个8位组转换为一个字符并写入外,我想不出其他方法

有人知道一个好方法吗?

试试:

#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;
}
#包括
#包括
int main(){
使用名称空间std;
常量位集x(2730ul);
当然,“一种”方法是使用字符串作为序列化方法。有一个接受字符串参数的位集构造函数,还有一个返回字符串参数的to_string()成员函数。还有一个使用该函数的>帮助器运算符将构造函数和to_string()进行utlize用于流插入和提取的函数。根据您的要求,该函数可能适用于您


这在一个应用程序中不够紧凑,因此我们最终编写了一个类似于位集的类(具有相同的接口)但它也可以序列化为字节流,这意味着它具有返回指向构成它的底层字节数组的指针的函数。如果有几个实现的源代码可供查看,那么写起来并不太难。

我不太明白……什么是“掩码”?为什么要创建一个常量位集,然后再创建另一个带有sam的常量位集e name?更新了我的答案,看一看!这些是快速编辑SGI的位集示例的工件。好的,很好。使用ofstream运算符添加的fstream::write()还有一个例子。通过将8位的组打包成一个字节并将输出写入二进制文件,您可以节省87.5%的空间。不幸的是,这种实现非常适合使用。。。