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();
}