带有“-”前缀的命令行参数

Command Line Arguments With "-" Prefix

我正在尝试编写一个可以从自定义参数开始的程序。就像这个例子中的“program.exe -width 1920 -height 1080”。我写了一个简单的代码,应该可以。

#include <iostream>

int main(int argc, char* argv[])
{
    for (int i = 1; i < argc; i++)
    {
        if (argv[i] == "-width")
        {
            std::cout << "Width: " << argv[++i] << "\n";
        }
        else if (argv[i] == "-height")
        {
            std::cout << "Height: " << argv[++i] << "\n";
        }
    }

    return 0;
}

而且这个程序不起作用。它没有显示任何东西。我也尝试用调试器逐行检查这段代码,但是当 argv[i] == "-width" 它只是跳过它。

有没有办法解决这个问题,或者只有其他一些方法可以解决这个问题?

您比较的是指针,而不是字符串。要通过 == 比较字符串,您应该使用 std::string.

您还应该检查元素 argv[++i] 是否存在。

#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
    for (int i = 1; i < argc; i++)
    {
        if (argv[i] == std::string("-width") && i + 1 < argc)
        {
            std::cout << "Width: " << argv[++i] << "\n";
        }
        else if (argv[i] == std::string("-height") && i + 1 < argc)
        {
            std::cout << "Height: " << argv[++i] << "\n";
        }
    }

    return 0;
}

也可以使用s后缀

cout << ("wilson" == "wilson"s) << endl;

输出:

1