这个问题已经在这里有了答案:




9年前关闭。






为什么不能使用一个ifstream变量来打开一个文件,读取它,然后关闭它,然后再打开另一个文件,读取和关闭,等等?
它在代码中的外观如何(让我们说每个文件内部都有一个整数):

int k, l;
ifstream input1;
input1.open("File1.txt");
input1 >> k;
input1.close();
input1.open("File2.txt");
input1 >> l;
input1.close();

解决问题的唯一方法是创建另一个ifstream变量。

最佳答案

您可以使用相同的变量,需要在重用对象之前调用.clear()清除对象的标志:

int k,l;
ifstream input1;
input1.open("File1.txt");
input1 >> k;
input1.close();
input1.clear();
input1.open("File2.txt");
input1 >> l;
input1.close();
input1.clear();

但我建议您不要重复使用它们。如果您不想一次拥有多个变量,可以将每个变量保留在自己的范围内:
int k,l;

{
    std::ifstream input1("File1.txt");
    input1 >> k;
}
{
    std::ifstream input1("File2.txt");
    input1 >> l;
}

关于c++ - 使用一个ifstream变量读取多个文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8137073/

10-13 03:31