程序告诉我参数显然不匹配

时间:2019-12-27 03:27:16

标签: c++

Picture 因此,我的C ++程序将连接到我的服务器以下载并安装最新版本。当有可用的更新时,它将下载Setup.exe文件,然后启动它。 setup.exe将安装新文件,然后使用“ -rs”参数启动新程序。客户端/服务器端的更新代码都可以正常工作,但是由于某种原因,程序未采用“ -rs”参数。它告诉我未指定“ -rs”,这很奇怪,因为如果键入std :: cout << argv 1,它将在控制台输出-rs。我什至尝试制作一个快捷方式,以“ -rs”启动程序,但仍然说-rs不等于-rs。

if (argc == 2)
    {
        std::cout << "There are 2 arguments." << std::endl;
        std::cout << "'" << argv[1] << "' is the second argument." << std::endl;
        if (argv[1] != "-rs")
        {
            std::cout << "'" << argv[1] << "' is not equal to '-rs' WTF?" << std::endl;
        }
    }

1 个答案:

答案 0 :(得分:0)

您正在将单个字符指针与整个字符数组进行比较,请尝试为argv!=“ -rs”指定条件语句是错误的。是的,如果您使用命令行参数,那么您需要给出2个要比较的索引,例如argv [index] [index]

        std::cout << "There are 2 arguments." << std::endl;
        std::cout << "'" << argv[1] << "' is the second argument." << std::endl;
        if (argv != "-rs")
        {
            std::cout << "'" << argv[1] << "' is not equal to '-rs' WTF?" << std::endl;
        }

OR

        char argv[2][4] = {"-ws","-rs"};
        std::cout << "There are 2 arguments." << std::endl;
        std::cout << "'" << argv[1] << "' is the second argument." << std::endl;
        if (argv[1] != "-rs")
        {
            std::cout << "'" << argv[1] << "' is not equal to '-rs' WTF?" << std::endl;
        }