4

是不是可以使用不同的ofstreams同时打开两个文件?我正在尝试写入两个 ofstreams,一个有一个变量文件名,每次循环迭代时都会更改,另一个有一个固定的文件名,我正在写入的数据将在循环的每次迭代中附加。展示:

ofstream file_variable_name;
ofstream file_to_be_appended;

{  //THIS IS A LOOP, variable_name changes at every iteration

file_variable_name.open(variable_name.c_str(), ios::out);
file_to_be_appended.open("fixed name", ios::out | ios::app);

//Do lots of things here, make data ready to be written to file

file_variable_name << "write something" << endl;
file_to_be_appended << "write same as above, but this is to be appended" << endl;

file_variable_name.close();
file_to_be_appended.close();
}

不知何故,我什至无法创建第二个文件,更不用说打开和附加了。我也可以发送完整的代码(大约 1000 行左右,需要截断),但我认为以上内容可以解释我正在尝试做什么,并且任何逻辑缺陷对专业人士来说都是显而易见的。

提前感谢所有建议!

4

2 回答 2

3

你让它变得比现在更难。通常不需要使用 .open() 和 .close() 方法,也不需要不断地重新打开同一个文件:

#include <fstream>

int main(int argc, char *argv[])
{
    std::ofstream file_to_be_appended("fixed name");

    char const *list[] = {"a", "b", "c"};
    for (auto s : list) { // My compiler doesn't have generalized initializer lists yet
        std::ofstream file_variable_name(s);

        file_variable_name << "write something\n";
        file_to_be_appended << "write same as above, but this is to be appended\n";
    }
}
于 2012-07-26T15:48:39.220 回答
1

我会将您发布的代码变成一个简单的程序:

#include <iostream>
#include <fstream>

int main() {
  ofstream file_variable_name;
  ofstream file_to_be_appended;

  file_variable_name.open("variable_name.txt", ios::out);
  file_to_be_appended.open("fixed_name.txt", ios::out | ios::app);

  file_variable_name << "write something" << endl;
  file_to_be_appended << "write same as above, but this is to be appended" << endl;

  file_variable_name.close();
  file_to_be_appended.close();

  return 0;
}

现在编辑它并添加一个带有一些虚拟文件名的循环。如果您在此过程中遇到任何问题,此代码非常简单,可以帮助您缩小问题范围。

于 2012-07-26T15:39:29.130 回答