C++ 如何创建一个循环来检查用户输入,以确定它是否是现有文件?

C++ 如何创建一个循环来检查用户输入,以确定它是否是现有文件?,c++,C++,我需要用户输入一个文件,只要用户输入存在的文件,文件就会循环。当用户输入一个不存在的文件时,程序将中断 #include <iostream> #include <fstream> using namespace std; int main() { string currentfile; int i = 0; do { cout << "Please enter a file name \n"; cin

我需要用户输入一个文件,只要用户输入存在的文件,文件就会循环。当用户输入一个不存在的文件时,程序将中断

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    string currentfile;
    int i = 0;
    do {
        cout << "Please enter a file name \n";
        cin >> currentfile;
        cout << currentfile << "\n";
        ifstream myfile(currentfile);
        if (myfile.good())
        {
            // display thenumber of characters, words, and lines in that file
            myfile.close();
        }
        else {
            cout << "break";
            break;
        }
        i++;
    } while(true);
    // repeat while user enters valid file name
}
#包括
#包括
使用名称空间std;
int main()
{
字符串文件;
int i=0;
做{
cout>currentfile;

cout您要检查的是:

ifstream myfile(currentfile);
if (myfile) // myfile.is_open() is fine too...
{
    // display thenumber of characters, words, and lines in that file
    myfile.close();

}
else {
    cout << "break";
    break;
}
然后,如果是,您将执行如下检查:eof(),…,或good()

例如:

ifstream myfile(currentfile);
if (myfile.is_open())
{
    while ( myfile.good() ) // while ( !myfile.eof() ), ...
    {
        getline (myfile,line);
        cout << line << endl;
    }
    myfile.close();
}
ifstream-myfile(当前文件);
如果(myfile.is_open())
{
while(myfile.good())//while(!myfile.eof())。。。
{
getline(myfile,line);

这主要是我的问题,我不能解决的问题。如果你用一个有效的文件然后改变为一个无效文件,这个流仍然准备好了I/O,我会考虑一个bug,但是,C++,没错。
fail()
eof()
fail()
bad()
的超集,如果r/w操作失败或发生格式错误,则返回true-这将发生在无效文件中,但显然不会重新设置标志。使用
清除()
重置标志。
ifstream myfile(currentfile);
if (myfile.is_open())
{
    while ( myfile.good() ) // while ( !myfile.eof() ), ...
    {
        getline (myfile,line);
        cout << line << endl;
    }
    myfile.close();
}