Cómo escribir BitSet datos en un archivo? [duplicar]
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?
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.