用C ++快速将大量数据写入ascii文件

时间:2013-08-28 08:23:53

标签: c++ fwrite cout printf

我正在用C ++编写一个粒子跟踪器,它在数值流场中释放一个粒子,然后及时整合以计算粒子的新位置。

对于每个粒子大约10k时间步长允许(希望数百万)时间允许的多个粒子。在模拟过程中,我生成了一个双array1 [10k] [10]和int array2 [10k] [4],它们代表了每个时间步长中每个粒子的14个特征。

我的问题是如何将这样的'矩阵'写入记事本++可读的.txt文件(用于后处理)。两个数组都要合并到文件中,以便形成[10k] [14]矩阵。

就我个人而言,我只有fprintf的经验,但Visual Studio似乎对该功能有一些安全问题。我见过的其他功能是流(我认为更安全)和fwrite。

有人可以启发类似功能的优点和缺点吗?可能对我的问题(如果有的话)更好的选择。

亲切的问候,

EJG

2 个答案:

答案 0 :(得分:3)

如果您未定义_CRT_SECURE_NO_WARNINGS,则较新的Microsoft编译器会为您提供各种“安全”警告。请参阅herehere

它建议使用的_s版本是微软特定的,所以如果你想为另一个平台编译代码,你需要重新编写。

还有其他方法可以用C ++写入文件。您可以考虑使用C ++ std::ofstream

或者,您可以只写std::cout并将程序输出流式传输到文件

myprogram.exe > output.txt

答案 1 :(得分:0)

如果您想使用fprintf,只需在源文件的顶部添加#pragma warning(disable:4996),它就不会抱怨您使用它。

否则你总是可以使用fprintf_s()或VS提供的替代方案。