2009-04-22 66 views
2

我有一個std :: bitset,我想寫入一個文件,有點點,但當然fstream的寫功能不支持這一點。我想不出另一種方式,除了將每個8位組轉換爲使用字符串並寫入字符的字符...如何將位集數據寫入文件?

任何人都知道一個好方法嗎?

+0

這是不幸的,這種實現會很好用... – jokoon 2011-01-04 16:08:23

回答

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; 
} 
+0

不知道我明白...什麼是'面具'?爲什麼你創建一個const位集,然後是另一個同名的? – 2009-04-22 17:55:18

0

哼「了」做這件事的方式是使用字符串作爲你的序列化方法。有一個bitset構造函數接受一個字符串參數,並且有一個返回1的to_string()成員函數。也有< <和>>輔助操作符,它們使用構造函數和to_string()函數進行流的插入和提取。根據您的要求,這可能適用於您。我們在一個應用程序中對於我們來說不夠緊湊,所以我們最終編寫了一個類似於bitset的類(具有相同的接口),但它也可以作爲字節流進行序列化,這意味着它具有返回指向底層字節數組的指針。如果你有幾個實現來源的話,編寫它並不太難。