Gravação de dados binários
Pergunta
Estou escrevendo para arquivo binário usando fstream e quando abrir o arquivo usando o sinalizador de binário.
Eu precisava escrever algum texto como binário, que uma gravação simples fez o truque. O problema é que eu preciso também para gravação (como mostrado na hexadecimal) 0. O valor quando aberto no bloco de notas binário é mostrado zero, mas quando tentou escrever este o valor não zero, que foi um valor de 30 em hexadecimal.
Como você gravar dados específicos como este?
Solução
Quando você abre o uso fstream a bandeira ios::binary
para especificar saída binária. Mais informações podem ser encontradas aqui .
Como para escrever 0, quando você vê 30 em hexadecimal que você está escrevendo o caráter '0', não o número binário 0. Para fazer isso com um fstream você pode fazer algo como:
my_fstream << 0;
Tenha em mente os dados binários 0 não tem representação textual, então você não será capaz de lê-lo no bloco de notas como você seria capaz de ler o caractere '0'.
Outras dicas
Você provavelmente só precisa de algo assim, melhorar como você vê o ajuste:
ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
char buf[1] = {0};
file.write(buf, sizeof(buf));
file.close();
}
Os links para soluções mais sofisticadas e documentação já foram publicadas.
Dê uma olhada nisso: http://www.cplusplus.com/forum/general/11272/