传递命令行参数

时间:2013-05-24 03:01:23

标签: command-line parameters

我正在编写一个程序,用户可以在其中传入-e或-n等选项作为命令行参数。但是以下if循环由于某种原因不起作用。我正在尝试运行该程序:./ a.out -e test.html其中test.html是我正在解析的文件名:

int main(int argc, char** argv) {
  ifstream inf;
    if(argv[1] == "-e")
        cout << "do somethin" << endl;
  else
        cout << "do something different" << endl;
  return 0;
}

2 个答案:

答案 0 :(得分:1)

将第一行更改为:

int main(int argc, char* argv[])
  1. 它创建了一个argv数组
  2. argv的每个元素都可以包含一串字符
  3. 我认为你的代码是更大的一部分。但如果您不确定,这里是完整的代码......

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(int argc, char* argv[]) {
    
        if(argv[1] == "-e")
            cout << "do somethin" << endl;
      else
            cout << "do something different" << endl;
      return 0;
    }
    

答案 1 :(得分:1)

您正在不正确地比较2个字符串。改变你的if()

if(argv[1] == "-e")

if (strcmp(argv[1], "-e") == 0) {

一定要

#include <string.h>

注意:虽然您的代码是C ++ cout << ...,但argv [1]不是std:string,而是s / b a const char *。因此strcmp()需要将其直接与引用的字符串进行比较。或者你可以:

#include <string>
if (std::string(argv[1]) == "-e")  { ...