Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么不';我的命令行参数没有被读取吗?_C++_Command_Arguments - Fatal编程技术网

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")
                        ^