我是C ++的新手,所以这可能是一个非常天真的问题。 我试图通过调用主文件中的函数将数据输出到文件中。我在我的主要功能中多次调用此函数,这就是为什么我需要打开附加模式来编写文件。这行代码写我的输出文件并正常工作:
ofstream outFile("result_col2.plt",ios::app);
.
.
outFile.close();
但是,我想让我的输出文件名称随机,我正在尝试这个:
int number = 1; // let's say
ostringstream convert;
convert << number;
string iLevel_str = convert.str();
string fname = "result_col2" + iLevel_str + ".plt";
ofstream outFile(fname.c_str(),ios::app);
.
.
outFile.close();
但是当我这样做时,我的数据文件在每次运行后都变成了两倍。为什么它在后一种情况下不起作用,但在我之前的案例中运作良好?有什么建议吗?
为了使其更容易理解,名为&#34; result_col2.plt&#34;每次运行主函数后仍保持相同的大小。而文件名为&#34; result_col21.plt&#34;大小加倍(首次运行 - 85 kb,然后170 kb,依此类推。)
答案 0 :(得分:1)
除非你改变那个int number = 1,否则它会一直打开并反复附加result_col21.plt,因此你需要做一倍的循环来增加每次迭代的数量
答案 1 :(得分:0)
如果您只需要一个随机文件名,您可以使用std::tmpnam()
标准函数,但它会生成位于系统中的随机文件名&#34; temp&#34; 。目录