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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top