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

C++: file output with a random name

本文关键字:文件 输出 随机 C++      更新时间:2023-10-16

我是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();

但是当我这样做时,每次运行后,我的数据文件的大小都会增加一倍。为什么它在后一种情况下不起作用,但在我之前的情况下效果很好?有什么建议吗?

为了使其更易于理解,名为"result_col2.plt"的文件在每次运行主函数后都保持相同的大小。而名为"result_col21.plt"的文件大小翻了一番(第一次运行 - 85 kb,然后是 170 kb,依此类推。

除非您更改整数 =1,否则它将一遍又一遍地打开并附加 result_col21.plt,因此您需要加倍执行 for 循环,每次迭代都会增加数字

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

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