在c++中将数组写入文本文件

Writing arrays to text files in c++

本文关键字:文本 文件 数组 c++      更新时间:2023-10-16

我必须在C++中的文本文件中写入5到6个相同大小的大数组。我只使用一个"for循环"将所有数组写入文本文件。以下是我正在使用的代码。

ofstream kx_ecl("COARSE_PERMX.GRDECL");
ofstream ky_ecl("COARSE_PERMY.GRDECL");
ofstream kz_ecl("COARSE_PERMZ.GRDECL");
ofstream ntg_c("COARSE_NTG.GRDECL");
ofstream phi_c("COARSE_PORO.GRDECL");
ofstream multbv("MULTBRV.GRDECL");

kx_ecl<<"PERMX"<<endl;
ky_ecl<<"PERMY"<<endl;
kz_ecl<<"PERMZ"<<endl;
ntg_c<<"NTG"<<endl;
phi_c<<"PORO"<<endl;
multbv<<"MULTBRV"<<endl;
for (i=0;i<N;i++) {
    kx_ecl<<new_KX[i]<<endl;
    ky_ecl<<new_KY[i]<<endl;
    kz_ecl<<new_KZ[i]<<endl;
    ntg_c<<new_NTG[i]<<endl;
    phi_c<<new_por[i]<<endl;
    multbv<<MULTBRV[i]<<endl;
}
kx_ecl<<"/";
ky_ecl<<"/";
kz_ecl<<"/";
ntg_c<<"/";
phi_c<<"/";
multbv<<"/";
kx_ecl.close();
ky_ecl.close();
kz_ecl.close();
ntg_c.close();
phi_c.close();
multbv.close();

我的问题是,如果我一个接一个地单独输出它们中的每一个,会更快吗?在这种情况下,它会有很多for循环,或者保持原样。此外,有没有任何方法可以在不使用for循环的情况下将数组写入文件?我之所以这么问,是因为与代码中的实际计算相比,输出到文件需要花费大量时间。

您知道std::endl不断刷新您的数据流吗?您可以推出"\n"个字符,并在每个流的末尾刷新一次。

I/O可能仍然是你花费的最大时间,但你正在克服缓冲,在这个例子中似乎至少没有从中获得任何东西。由于更好的内存位置,一次处理一个数组/文件可能会给你带来无限快的性能(除非你用了太多内存,你要把页面交换到磁盘),但这种差异可能会完全消失在文件编写的巨大成本中。