Come scrivere BitSet dati in un file? [duplicare]
Domanda
Questa domanda ha già una risposta qui:
Ho uno std :: bitset che mi piacerebbe scrivere in un file, bit per bit, ma naturalmente funzione di scrittura di fstream non supporta questa. Non riesco a pensare ad un altro modo oltre a convertire ogni gruppo di 8 bit a un char utilizzando archi e la scrittura che ...
Qualcuno sa di un buon modo?
Soluzione
Prova:
#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;
}
Altri suggerimenti
Bene, "a" modo di farlo è quello di utilizzare stringa come il metodo di serializzazione. C'è un costruttore bitset che prende un argomento stringa, e non v'è una funzione di membro to_string (), che restituisce uno. Ci sono anche << e >> operatori di supporto che uso che utlize la funzione to_string () costruttore e per l'inserimento e l'estrazione flusso. Che può funzionare per voi a seconda delle vostre esigenze.
Non era compatta abbastanza per noi in una sola applicazione, così abbiamo finito per scrivere una classe che sembra bitset (ha la stessa interfaccia) ma è anche serializzabile come un flusso di byte, che significa che ha le funzioni che restituiscono puntatori la matrice di byte di fondo che la compone. Non è stato troppo terribilmente difficile da scrivere se avete la fonte di diverse implementazioni a guardare.