Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich habe eine std :: bitset, die ich in eine Datei, Bit für Bit schreiben möchte, aber natürlich fstream die Schreibfunktion dies nicht unterstützt. Ich kann nicht von einer anderen Art und Weise denken neben jedem 8-Bit-Gruppe in eine char Umwandlung mit String und das Schreiben von ...

Wer weiß, eine gute Art und Weise?

War es hilfreich?

Lösung

Versuchen:

#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;
}

Andere Tipps

Nun, „a“ Art und Weise, es zu tun ist Zeichenfolge als Serialisierung Methode zu verwenden. Es gibt einen bitset Konstruktor, der ein String-Argument, und es gibt eine to_string () Mitgliedsfunktion, die eine zurückgibt. Darüber hinaus gibt es << und >> Helfer Operatoren, die Verwendung, die den Konstruktor und to_string () Funktion für Strom Einsetzen und Herausziehen utlize. Das kann für Sie arbeiten je nach Ihren Anforderungen.

Das war kompakt genug für uns nicht in einer Anwendung, so dass wir schließlich auf eine Klasse zu schreiben, die wie bitset aussieht (die gleiche Schnittstelle), aber es ist auch serializable als ein Strom von Bytes, dh es Funktionen, die Zeiger zurückgeben auf den darunter liegenden Byte-Array, das sie bildet. Es war nicht allzu furchtbar schwer zu schreiben, wenn Sie die Quelle auf mehrere Implementierungen haben, zu betrachten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top