【发布时间】:2014-10-31 04:11:07
【问题描述】:
我有一个程序,我需要在其中接受一个命令行参数,它是一个文本文件的名称。该程序由 ./programName file1 运行。如果出于我的程序的目的,我可以假设 file1 的格式总是正确的,我可以这样做吗
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 语句?
【问题讨论】:
-
good()要返回 true,is_open()也必须为 true。也就是说,您可以使用good()(或者,我最喜欢的,更改为if (myFile) ...,这意味着同样的事情)。 -
所以只是检查一下,在我的情况下,因为我正在检查 !good() 我可以做 if(!myFile)?
-
正确,常见。
标签: c++ command-line-arguments