这是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;)永远不会评估为真
我缺少什么或不理解?
答案 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) ...
。应该解决问题。