C++ ifstream.open()的行为就像它一样';It’他没有读取文件 //提示用户输入文件名并将其存储 字符串文件名; cout>文件名; ifstream-infle(文件名); inFile.open(文件名); //提示用户,直到他们给出可以打开的文件名 bool validFileName=false; while(validFileName==false) { if(infle.is_open()) { validFileName=true; } 其他的 { cout>文件名; 河流充填; inFile.open(文件名); } } //这个区块打印到终端,所以它打开了 if(infle.is_open()) {cout

C++ ifstream.open()的行为就像它一样';It’他没有读取文件 //提示用户输入文件名并将其存储 字符串文件名; cout>文件名; ifstream-infle(文件名); inFile.open(文件名); //提示用户,直到他们给出可以打开的文件名 bool validFileName=false; while(validFileName==false) { if(infle.is_open()) { validFileName=true; } 其他的 { cout>文件名; 河流充填; inFile.open(文件名); } } //这个区块打印到终端,所以它打开了 if(infle.is_open()) {cout,c++,fstream,C++,Fstream,In: 文件在第一行打开。 重新打开它是多余的 此外,在循环中,您还声明了一个临时变量infle,该变量在else语句结尾处停止。请确保仅在您希望使用它的最外层范围声明一次。in: //Prompts user for a file name and stores it string fileName; cout << "Enter the file name: "; cin >> fileName; ifstream inFile (fileName); inFil

In:

文件在第一行打开。 重新打开它是多余的

此外,在循环中,您还声明了一个临时变量infle,该变量在else语句结尾处停止。请确保仅在您希望使用它的最外层范围声明一次。

in:

//Prompts user for a file name and stores it
string fileName;

cout << "Enter the file name: ";
cin >> fileName;

ifstream inFile (fileName);
inFile.open(fileName);

//Prompt the user until they give the name of a file that can be opened
bool validFileName = false;
while(validFileName == false)
{
    if(inFile.is_open())
    {
        validFileName = true;
    }
    else
    {
        cout << "Please enter a valid file name: ";
        cin >> fileName;

        ifstream inFile;
        inFile.open(fileName);
    }
 }
//this block prints to the terminal, so it's opening
 if(inFile.is_open())
 { cout << "It works! \n"; }
文件在第一行打开。 重新打开它是多余的


在循环中,您还声明了一个临时变量infle,该变量在else语句结尾处停止。请确保仅在您希望使用它的最外层范围声明一次。

问题在于您正在使用

ifstream inFile (fileName);
inFile.open(fileName);
在循环中。循环中的变量隐藏循环外同名的变量。删除这些行中的第一行


FWIW,您可以将代码简化为:

ifstream inFile;
inFile.open(fileName);
ifstream-infle(文件名);
而(!infle)
{
//提示用户,直到他们给出可以打开的文件名
cout>文件名;
inFile.open(文件名);
}
如果(填充)
{

问题是你正在使用

ifstream inFile (fileName);
inFile.open(fileName);
在循环中。循环中的变量隐藏循环外同名的变量。删除这些行中的第一行


FWIW,您可以将代码简化为:

ifstream inFile;
inFile.open(fileName);
ifstream-infle(文件名);
而(!infle)
{
//提示用户,直到他们给出可以打开的文件名
cout>文件名;
inFile.open(文件名);
}
如果(填充)
{

这是多余的,但不是问题的真正原因。这是多余的,但不是问题的真正原因。