是否可以使用不同的流同时打开两个文件?我正在尝试写入两个流,一个具有变量文件名,每次循环迭代时都会更改,另一个具有固定文件名,我正在编写的数据将在循环的每次迭代时附加。为了证明:
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行左右,需要被截断),但我认为上面的内容可以解释我想要做的事情,并且任何逻辑缺陷对于专业人士都是显而易见的。
提前感谢所有建议!
答案 0 :(得分: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";
}
}
答案 1 :(得分: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;
}
现在编辑它并添加一个带有一些虚拟文件名的循环。如果您在此过程中遇到任何问题,此代码非常简单,可以帮助缩小问题范围。