我有一个程序,我需要在一个命令行参数是一个文本文件的名称。该程序由./programName file1运行。如果我的程序的目的,我可以假设文件1将永远是正确的格式,我可以做我在合理安全的假设文件将打开?
ifstream myFile(argv[1]);
if(!myFile.good()){
cout << "Not a valid player file" << endl;
return 1;
}
,检查是否有这样一个文件,然后简单地
myFile >> var1;
myFile >> var2;
myFile.close();
,或者我应该坚持
if(myFile.is_open()){
myFile >> var1;
myFile >> var2;
myFile.close();
}
else{
cout << "Unable to open file";
}
我再次可以假设该文件将始终格式正确(即myFile >> var#将始终工作)。那么在我的初始检查(!myFile.good())
之后有没有可能调用else
声明的情况?
for good()'返回true,'is_open()'也必须为true。也就是说,你可以用'good()'(或者,我最喜欢的,改成'if(myFile)...',这意味着同样的事情)。 – 2014-10-30 20:03:31
所以只是为了检查,在我的情况,因为我检查!好()我可以做,如果(!myFile)? – 2014-10-30 20:07:58
正确,常见。 – MSalters 2014-10-30 20:21:44