我正在尝试编写一个程序,我将能够从自定义参数开始。 如本例中的“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