C ++:具有随机名称的文件输出

时间:2017-04-06 18:55:06

标签: c++

我是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,依此类推。)

2 个答案:

答案 0 :(得分:1)

除非你改变那个int number = 1,否则它会一直打开并反复附加result_col21.plt,因此你需要做一倍的循环来增加每次迭代的数量

答案 1 :(得分:0)

如果您只需要一个随机文件名,您可以使用std::tmpnam()标准函数,但它会生成位于系统中的随机文件名&#34; temp&#34; 。目录

有关详情,请参阅:http://en.cppreference.com/w/cpp/io/c/tmpnam