为什么我的命令行参数没有被读取?
Why aren't my commandline arguments being read?
我在我的程序中调用这个:
std::string gameDirectory = "";
for (int i = 1; i < argc; i++)
{
if (argv[i] == "-game")
gameDirectory = argv[i + 1];
}
if (gameDirectory == "")
exit(0);
使用命令行参数
-game demo
并且它拒绝设置 gameDirectory。有什么想法吗?
argv[i]
是 const char*
类型,直接比较指针 return 仅当它们指向同一位置时才为真。程序参数永远不会指向与现有常量字符串相同的位置,因此永远不会访问 if
。
您要么需要将任一字符串设为 std::string
(具有 == 重载以与 char 指针进行比较),要么使用 strcmp
来比较参数。
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")
^
此警告告诉您需要知道的一切 (live)。
使用 strcmp
比较 C 字符串。
我在我的程序中调用这个:
std::string gameDirectory = "";
for (int i = 1; i < argc; i++)
{
if (argv[i] == "-game")
gameDirectory = argv[i + 1];
}
if (gameDirectory == "")
exit(0);
使用命令行参数
-game demo
并且它拒绝设置 gameDirectory。有什么想法吗?
argv[i]
是 const char*
类型,直接比较指针 return 仅当它们指向同一位置时才为真。程序参数永远不会指向与现有常量字符串相同的位置,因此永远不会访问 if
。
您要么需要将任一字符串设为 std::string
(具有 == 重载以与 char 指针进行比较),要么使用 strcmp
来比较参数。
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") ^
此警告告诉您需要知道的一切 (live)。
使用 strcmp
比较 C 字符串。