我有一個std :: bitset,我想寫入一個文件,有點點,但當然fstream的寫功能不支持這一點。我想不出另一種方式,除了將每個8位組轉換爲使用字符串並寫入字符的字符...如何將位集數據寫入文件?
任何人都知道一個好方法嗎?
我有一個std :: bitset,我想寫入一個文件,有點點,但當然fstream的寫功能不支持這一點。我想不出另一種方式,除了將每個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;
}
不知道我明白...什麼是'面具'?爲什麼你創建一個const位集,然後是另一個同名的? – 2009-04-22 17:55:18
哼「了」做這件事的方式是使用字符串作爲你的序列化方法。有一個bitset構造函數接受一個字符串參數,並且有一個返回1的to_string()成員函數。也有< <和>>輔助操作符,它們使用構造函數和to_string()函數進行流的插入和提取。根據您的要求,這可能適用於您。我們在一個應用程序中對於我們來說不夠緊湊,所以我們最終編寫了一個類似於bitset的類(具有相同的接口),但它也可以作爲字節流進行序列化,這意味着它具有返回指向底層字節數組的指針。如果你有幾個實現來源的話,編寫它並不太難。
這是不幸的,這種實現會很好用... – jokoon 2011-01-04 16:08:23