gpt4 book ai didi

c++ - 创建制表符分隔文本文件的更快方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:16 24 4
gpt4 key购买 nike

我的许多程序输出大量数据供我在 Excel 上查看。查看所有这些文件的最佳方式是使用制表符分隔的文本格式。目前我使用这段代码来完成它:

ofstream output (fileName.c_str());
for (int j = 0; j < dim; j++)
{
for (int i = 0; i < dim; i++)
output << arrayPointer[j * dim + i] << " ";
output << endl;
}

这似乎是一个非常缓慢的操作,是否有更有效的方式将这样的文本文件输出到硬盘?

更新:

考虑到这两个建议,新的代码是这样的:

ofstream output (fileName.c_str());
for (int j = 0; j < dim; j++)
{
for (int i = 0; i < dim; i++)
output << arrayPointer[j * dim + i] << "\t";
output << "\n";
}
output.close();

以 500KB/s 的速度写入 HD

但这以 50MB/s 的速度写入 HD

{
output.open(fileName.c_str(), std::ios::binary | std::ios::out);
output.write(reinterpret_cast<char*>(arrayPointer), std::streamsize(dim * dim * sizeof(double)));
output.close();
}

最佳答案

使用C IO,比C++ IO快很多。我听说有人在编程竞赛中超时纯粹是因为他们使用了 C++ IO 而不是 C IO。

#include <cstdio>

FILE* fout = fopen(fileName.c_str(), "w");

for (int j = 0; j < dim; j++)
{
for (int i = 0; i < dim; i++)
fprintf(fout, "%d\t", arrayPointer[j * dim + i]);
fprintf(fout, "\n");
}
fclose(fout);

只需将 %d 更改为正确的类型即可。

关于c++ - 创建制表符分隔文本文件的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2085639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com