Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Tengo un std :: bitset que me gustaría escribir en un archivo, bit por bit, pero por supuesto función de escritura de fstream no admite esta. No puedo pensar en otra forma además de convertir cada grupo de 8 bits a un char usando cuerdas y escrito que ...

Alguien sabe de un buen camino?

¿Fue útil?

Solución

Probar:

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

Otros consejos

Bueno, "una" forma de hacerlo es utilizar la cadena como su método de serialización. Hay un constructor bitset que toma un argumento de cadena, y hay una función miembro to_string () que devuelve uno. También hay << >> y operadores de ayuda que el uso que utlize la función to_string () constructor y para la inserción y la extracción de corriente. Eso puede funcionar para usted en función de sus necesidades.

Eso no era lo suficientemente compacto como para nosotros en una sola aplicación, por lo que terminó escribiendo una clase que se parece a bitset (tiene la misma interfaz) pero también es serializable como un flujo de bytes, lo que significa que tiene las funciones que devuelven punteros a la matriz de bytes subyacente que lo compone. No fue tan terriblemente difícil escribir si tiene la fuente a varias implementaciones a la vista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top