Como escrever bitset dados em um arquivo? [duplicado]
Pergunta
Esta questão já tem uma resposta aqui:
Eu tenho um std :: bitset que eu gostaria de escrever para um arquivo, bit por bit, mas é claro que a função de gravação de fstream não suporta isso. Eu não posso pensar de outra maneira além de converter cada grupo de 8 bits para um char usando cordas e escrever isso ...
Alguém sabe de uma boa maneira?
Solução
Tente:
#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;
}
Outras dicas
Bem, "a" maneira de fazer isso é usar string como seu método de serialização. Há um construtor bitset que leva um argumento de cadeia, e há uma () função membro to_string que retorna um. Há também << >> e operadores auxiliares que o uso que utlize o construtor e função to_string () para a inserção e extracção de fluxo. Isso pode funcionar para você, dependendo de suas necessidades.
Isso não foi compacto o suficiente para nós em um aplicativo, então acabamos escrevendo uma classe que se parece com bitset (tem a mesma interface), mas também é serializado como um fluxo de bytes, o que significa que tem funções que ponteiros de retorno para a matriz de bytes subjacente que torna-se. Não foi terrivelmente difícil escrever se você tiver a fonte para várias implementações de se olhar.