【发布时间】:2018-09-28 04:42:27
【问题描述】:
我正在尝试输入格式
"prog1 1 所有文件1"
第一个输入必须是 argv[1] 应该是 int。
所以我需要一种方法来确定 argv[1] 是否作为字符串“xxx”(“prog1 xxx”)输入,它应该返回“NO PHRASE LENGTH”但它返回“INVALID PHRASE LENGTH”。
我看到有一个 isdigit() 函数,但我不确定如何使用它。
int main(int argc, char *argv[]){
try{
if(argc == 1){
cout << "NO PHRASE LENGTH" << endl; exit(1);
}
else if((stoi(argv[1])) <= 0 ){
cout << "INVALID PHRASE LENGTH" << endl; exit(1);
}
else if(argc == 2){
cout << "NO MODE" << endl; exit(1);
}
else if(!(std::string(argv[2]) == "all") && !(std::string(argv[2]) == "top")){
cout << "INVALID MODE" << endl;
}
else if(argc == 3){
cout << "NO FILES GIVEN" << endl;
}
else if(argc >= 4){
ifstream f;
for(int i = 4; i < argc; i--){
f.open( argv[i] );
if( ! f.good() ) {
cout << "BAD FILE " << argv[i] << endl; exit(1);
}
//cout << "OK" << endl;
//f.close();
}
}
else
return 0;
}
catch(exception e){
}}
【问题讨论】:
-
根据您的 if 结构,“NO PHRASE LENGTH”仅在您调用没有命令行参数(“prog1”)的程序时才会写入。调用不带参数的程序会将
argc设置为 1,并且您提供的代码只会在这种情况下打印“NO PHRASE LENGTH”。 -
仍然没有回答我的问题。 /// if(argc == 1){ cout
标签: c++