screver e ler em C ++ dobra de um arquivo binár
Quero executar operações de E / S de disco para um programa que consome muita RAM. Uso matrizes de dobros e acho que gravá-las em disco como bytes é a maneira mais rápida (preciso preservar a precisão dupla
Como fazer isso com portabilidade?
Encontrei este código aqu) mas o autor diz que não é portátil ...
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
ofstream ofs( "atest.txt", ios::binary );
if ( ofs ) {
double pi = 3.14;
ofs.write( reinterpret_cast<char*>( &pi ), sizeof pi );
// Close the file to unlock it
ofs.close();
// Use a new object so we don't have to worry
// about error states in the old object
ifstream ifs( "atest.txt", ios::binary );
double read;
if ( ifs ) {
ifs.read( reinterpret_cast<char*>( &read ), sizeof read );
cout << read << '\n';
}
}
return 0;
}