#include<fstream>
#include <iostream>
#include<string.h>
using namespace std;
int main(int argc, char* argv[])
{
string s = "all";
string t = "top";
for (int i=1; i<argc ; i++)
{
if( i == 2 && (argv[i] != s) && (argv[i] != t))
{
cout<<"INVALID MODE"<< endl;
}
if( i ==1 && (argv[i] != int))
{
cout<<"INVALID PHRASE LENGTH"<< endl;
}
}
}
我知道这是完全错误的,但是有解决办法吗?我要说的是,当i = 2时,意味着在命令行中的参数2并不是全部,也不是顶部,以打印出无效模式
此外,如何测试参数是否不是整数以及是否不是整数以打印出“ INVALID PHRASE LENGTH”,但是我将如何测试第一个参数是否为整数或负数< / p>
答案 0 :(得分:-1)
不确定是否知道,但是在运行时(抱歉在Windows上运行)
program.exe arg1 arg2
然后,argv[0]
是program.exe
,argv[1]
是arg1
,argv[2]
是arg2
,因此请谨慎使用第一个和第二个参数,意味着argv[1]
确实是二进制名称之后的第一个字符串,但这仅是因为从0
开始的C ++索引。
根据您要实现的目标,无需循环并遍历参数。
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char* argv[])
{
string s = "all";
string t = "top";
if (argc >= 3 && ! (argv[2] == s || argv[2] == t)) {
cout << "INVALID MODE" << endl;
}
}
要回答将字符串解析为int
的问题很多。
尽管在这里说过,拿起C ++入门书比尝试编译它是更好的时间投入。