两个循环内有多个文本文件

时间:2019-05-30 20:44:21

标签: c++

我想在两个循环中创建一些文件,然后在不关闭第一个和第二个循环中的文件的情况下填写它们。

在这里,您可以通过查看代码的这一部分找到我对这个问题的意思,它不起作用...当然,它创建了100个文件,但问题是每个文件仅包含最后一个迭代我希望每个文件都写入第一个循环的整个迭代。

ofstream fout;
for(int t = 0; t < N; t++){
    for(int e = 0; e < 100; e++){
        fout.open("myfile_"+strcpp(e)+".txt");
        fout << t << psi[e] << endl;
    }
}
fout.close();

其中函数strcpp(e)

给出
template <class T>
string  strcpp(T value){
        ostringstream out;
        out << value;
        return out.str();
}

1 个答案:

答案 0 :(得分:0)

每次致电:

fout.open(...);

在打开文件之前,文件的全部内容将被删除。由于您多次打开每个文件,因此在写入下一行之前,您会不断擦除已写入该文件的所有内容。这就是为什么外部for循环的最后一次写入是每个文件中唯一的原因。 我们可以通过指定要附加到要打开的文件来解决此问题。 std :: ofstream :: open()采用第二个可选参数来指定模式。您可以将模式设置为将在文件中写入的内容追加到已存在文件的末尾,而不是擦除原始文件内容。 例如:

fout.open(my_file_name, ios::app);

尽管更好的解决方案可能是仅在内部和外部for循环中切换。然后,在内部for循环开始之前打开每个文件,对那个文件进行所有写操作,然后关闭该文件并移至下一个文件。这样,您不必多次打开每个文件。