如何从argv []获取元素

时间:2017-02-19 19:18:54

标签: c++ command-line-arguments main-method

这是C ++

在Windows cmd行用户类型

p3.exe X <data.txt

其中&#34; p3.exe&#34;是程序名称,

&#34; X&#34;将是1,2或3,

和&#34; data.txt&#34;是一些文本文件程序用于输入。

在main方法中,我希望argv [1]等于在cmd行输入的字符串X.事实上,如果我这样做

wcout << argv[1]

输出是&#34; X&#34;如预期的那样。

现在我这样做,

int main(int argc, char* argv[])
{
     if (argc > 1)
     {
          if (argv[1] == "X")
          {
              //do stuff
          }
     }
     return 0;
}   // end main

但是(argv [1] ==&#34; X&#34;)永远不会评估为真

我缺少什么或不理解?

2 个答案:

答案 0 :(得分:4)

你不能将C风格的字符串(char *)与==进行比较,因为它只比较指针而不是指向字符串。

您可以使用strcmp

if (strcmp(argv[1], "X") == 0)

或确保比较的至少一侧是C ++字符串:

if (std::string(argv[1]) == "X")

答案 1 :(得分:0)

使用if(strcmp(argv[1],"X")==0) ...。应该解决问题。