使用一个ifstream变量来读取多个文件

sho*_*ees 8 c++ ifstream

可能重复:
C++我可以重用fstream来打开和写入多个文件吗?

为什么不能使用一个ifstream变量打开一个文件,读取它,然后关闭它,然后打开另一个文件,读取和关闭等等?怎么看代码(让我们说每个文件里面都有一个整数):

int k, l;  
ifstream input1;  
input1.open("File1.txt");  
input1 >> k;  
input1.close();  
input1.open("File2.txt");  
input1 >> l;  
input1.close(); 
Run Code Online (Sandbox Code Playgroud)

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

Soa*_*Box 15

您可以使用相同的变量,.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();
Run Code Online (Sandbox Code Playgroud)

但我建议您不要重复使用它们.如果您不希望同时拥有多个变量,则可以将每个变量保留在自己的范围内:

int k,l;

{
    std::ifstream input1("File1.txt");  
    input1 >> k;
}
{
    std::ifstream input1("File2.txt");  
    input1 >> l;  
}
Run Code Online (Sandbox Code Playgroud)

  • 从C++ 0X开始,不需要调用ifstream :: clear(),因为标准指定(参见C++ 0x/27.9.1.9)成功ifstream :: open()将调用ifstream :: clear(). (2认同)

Boj*_*zec 5

在对象clear()之后调用close()ifstream