如何从 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) ...
。应该可以解决问题。
这是 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) ...
。应该可以解决问题。