C++ 为什么不';我的命令行参数没有被读取吗?
我在我的程序中称之为:C++ 为什么不';我的命令行参数没有被读取吗?,c++,command,arguments,C++,Command,Arguments,我在我的程序中称之为: std::string gameDirectory = ""; for (int i = 1; i < argc; i++) { if (argv[i] == "-game") gameDirectory = argv[i + 1]; } if (gameDirectory == "") exit(0); 它拒绝设置游戏目录。有什么想法吗?argv[i]属于const char*类型
std::string gameDirectory = "";
for (int i = 1; i < argc; i++)
{
if (argv[i] == "-game")
gameDirectory = argv[i + 1];
}
if (gameDirectory == "")
exit(0);
它拒绝设置游戏目录。有什么想法吗?
argv[i]
属于const char*
类型,指针的直接比较只有在指向同一位置时才返回true。程序参数永远不会指向与现有常量字符串相同的位置,因此永远不会访问if
您需要将字符串设置为std::string
(它具有==重载,用于与字符指针进行比较),或者使用strcmp
来比较参数
if (strcmp(argv[i], "-game") == 0)
打开编译警告强> 此警告告诉您需要知道的一切()
使用strcmp比较C字符串。定义“它拒绝设置”。到底发生了什么?这和你想发生的有什么不同?你是如何确定两者的?嗯,我的编译器警告是打开的,但我不明白。无论如何,谢谢!:)@邦西:他们还不够非常感谢。这解决了我的问题。
if (strcmp(argv[i], "-game") == 0)
main.cpp: In function 'int main(int, char**)':
main.cpp:8:24: warning: comparison with string literal results in unspecified behaviour [-Waddress]
if (argv[i] == "-game")
^