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

Multiple text files inside two loop

本文关键字:文本 文件 循环 两个      更新时间:2023-10-16

我想在两个循环中创建一些文件并填写它们,而无需关闭第一个和第二个循环中的文件。

在这里,您可以通过查看代码的这一部分来找到我对这个问题的意思,但它不起作用......当然,它会创建 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();
}

每次调用时:

fout.open(...);

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

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

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