我有一对头文件。在IsingModel.h中,我公开声明:
ofstream logfile1;
ofstream logfile2;
然后打开相关文件(logfile1和logfile 2有不同的名称)我用:
do {
name2.str(""); //reset name stringstream
n++; //increase n value
name2 << "output_" << gridSize << "_" << seed << "_" << n << "_eqmCalc.txt"; //stream created
} while (if_exist(name2.str())); //test if file already exists
logfile2.open(name2.str());
适用于创建文件。然后,在整个代码中,我使用ofstreams来处理文件,例如:
logfile1 << counter << " " << calcM() << " " << calcE() << endl;
这适用于对每个文件独立的操作,但是当我调用析构函数时,我想为每个文件写入相同的标准信息。为此,我正在尝试迭代地写入文件,它似乎不起作用:
void IsingSystem::test() {
for (int i = 1; i = 2; i++) {
if (ofstream("logfile" + to_string(i)).is_open); {
ofstream("logfile" + to_string(i)) << "success" << endl;
}
}
}
而是创建名为logfile1和logfile2的文件。作为替代方案,我尝试创建一系列ofstreams:
void createFileHandles() {
const int count = 2;
std::ofstream logfile[count];
}
但是,我无法弄清楚如何在函数之间正确传递它。
处理流的正确方法是什么,以便我可以打开多个文件,同时向它们写入不同的指令,但也会发生一些操作?
答案 0 :(得分:0)
您可以使用ofstream
vector<ofstream> ofstreams(2);
//fill vec
for (int i = 0; i < 2; i++)
{
if (ofstreams[i].is_open);
{
ofstreams[i]<< "success" << endl;
}
}
然后,您可以将ofstreams
传递给函数。