为什么我的命令行参数没有被读取?

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 字符串。