如果有条件,当我想第二个论点时

时间:2018-09-20 13:21:45

标签: c++

  #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>

1 个答案:

答案 0 :(得分:-1)

不确定是否知道,但是在运行时(抱歉在Windows上运行)

program.exe arg1 arg2

然后,argv[0]program.exeargv[1]arg1argv[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 ++入门书比尝试编译它是更好的时间投入。