c ++检查命令行参数

时间:2016-06-01 04:25:51

标签: c++ exception command-line

我需要在命令行参数中检查两个单独的文件名。

  #include <stdio.h>
  #include <iostream>
  #include <stdexcept>

  using namespace std;

  int main (int argc, char *argv[])
  {
     try
     {
        if (argc != 3 || argv[1] == argv[2])
        {
           throw invalid_argument("Error");
        }
     }
     catch (invalid_argument &ex)
     {
        cout << ex.what() << '\n';
     }
  }

当两个文件名相同时,以下代码不会产生错误。

GetIfEntry2

2 个答案:

答案 0 :(得分:5)

argv是一个字符串,因此您无法比较“==”运算符。你在string.h中使用strcmp

if (argc != 3 || strcmp(argv[1],argv[2])==0)
    {
       throw invalid_argument("Error");
    }

答案 1 :(得分:1)

这一行

argv[1] == argv[2]

比较指针,而不是实际的字符串值

尝试

!strcmp(argv[1] , argv[2])