带有“-”前缀的命令行参数
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
我正在尝试编写一个可以从自定义参数开始的程序。就像这个例子中的“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