C++ 如何将位集数据写入文件?
我有一个std::bitset,我想一点一点地写入文件,但fstream的write函数当然不支持这一点。除了使用字符串将每个8位组转换为一个字符并写入外,我想不出其他方法 有人知道一个好方法吗?试试: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
#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%的空间。不幸的是,这种实现非常适合使用。。。