我正在尝试制作一个函数,该函数采用数组“inputLayer[]”并将数组中的每个元素存储在单独的文件中。第一次调用该函数时,它应该创建文件,随后调用它时,它应该将 inputLayer 中的新元素追加到文件末尾。
如果我在单个文件中重复存储单个变量,我会使用如下内容:
fstream recordFile;
recordFile.open ("inputRecord.txt", fstream::in | fstream::out | fstream::app);
recordFile << inputLayer[0] << endl;
过去这对我有用,但现在我有很多变量,我想将它们写入名为“input_0_record.txt”、“input_1_record.txt”等的单个文件。
在下面的代码中,我使用 stringstream 创建文件名,然后使用与上面相同的方法将变量写入文件。
int recordInputVariables(double inputLayer[])
{
for(int i = 0; i < inputLayerSize; i ++)
{
stringstream ss;
ss << i;
string inputNumberString = ss.str();
string recordFileName = "input_";
recordFileName.append(inputNumberString);
recordFileName.append("_record.txt");
fstream inputRecordFile( recordFileName.c_str() );
inputRecordFile.open (recordFileName, fstream::in | fstream::out | fstream::app);
inputRecordFile << inputLayer[i] << endl;
inputRecordFile.close();
}
return 0;
}
但是,当我运行这个文件时,第一次调用函数时会创建文件并将变量写入文件,但随后调用函数时,没有新变量写入文件。
我几乎可以肯定这是我打开文件的方式的问题。任何人都可以发现我做错了什么吗?
最佳答案
inputRecordFile.open (recordFileName, fstream::out | fstream::app);
不要在此上下文中使用 fstream::in
。
关于C++ 为什么文件没有被追加或覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36237055/