ASCII 出力を使用しないでください。サイズが明確に定義されているバイナリを使用します。
したがって、fstream と double を使用している場合:
fstream filewriter("file.bin",ios::out | ios::binary);
vector<double> mylist;
mylist.push_back(2.5);
mylist.push_back(7.6);
mylist.push_back(2.1);
mylist.push_back(3.2);
mylist.push_back(4.2);
filewriter.write((char*)&mylist[0],mylist.size()*sizeof(double));
これは正確に 40 バイトを書き込みます。これは、リストのサイズ (5 要素) の 2 倍 (8) 倍のサイズです。fseek の使用は非常に簡単です。
科学的な環境では、大量の出力がある場合、バイナリ データを使用することを強くお勧めします。でも:
1-エンディアンの概念(ビッグエンディアン、リトルエンディアン)について学ぶ必要があります。2- 再利用のために適切に作業を文書化する必要があります (目的、サイズ、要素の数、次元)。文書化するのを忘れると、大きな誤解に直面します (私は物理学者であり、シミュレーションをプログラムしています)。
したがって、データ分析用の ASCII は適切な選択ではありません。
幸いなことに、HDF5 と呼ばれる、整理に特化した完全なライブラリがあります。エンディアンと移植性を整理します。ただし、これに対処するのは簡単ではなく、学習曲線が急勾配です。後の話は難しいと思います。
私がお勧めするのは、バイナリ ファイルの扱い方と読み取り方を学び、それらの問題を理解することです。MPI を使用しているので、バイナリ ファイルを扱うのに十分な専門家だと思います。
バイナリ ファイルの簡単なチュートリアルを次に示します。
http://courses.cs.vt.edu/cs2604/fall02/binio.html
乾杯。