2

这是 C++

在 windows cmd 行用户类型

p3.exe X <data.txt

其中“p3.exe”是程序名称,

“X”将是 1、2 或 3,

“data.txt”是一些文本文件程序用于输入。

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

wcout << argv[1]

正如预期的那样,输出是“X”。

所以现在我这样做,

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

但是 (argv[1] == "X") 永远不会评估为真

我错过了什么或不理解什么?

4

2 回答 2

4

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

您可以使用strcmp

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

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

if (std::string(argv[1]) == "X")
于 2017-02-19T19:24:49.043 回答
0

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

于 2017-02-19T19:25:35.127 回答