如何从 argv[] 获取元素

How to get an element from argv[]

这是 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") 永远不会计算为真

我缺少或不理解什么?

您不能将 C-style 字符串 (char *) 与 == 进行比较,因为它只比较指针而不是 pointed-to 字符串。

您可以使用 strcmp:

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

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

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

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