我需要验证传递给我的程序的选项,如下所示:
./prog -n teamName -p port -h host
我正在使用C ++编写客户端,并且显然以类似C的方式验证了这些参数。作为C ++的新手,在以面向对象的方式开发内容时,拥有正确的思维方式非常重要。
举个例子,到目前为止,我正在进行此验证:
int verify_arguments(int ac, char **av)
{
int i;
std::string arg;
std::string team_name;
int port;
std::string ip("0");
i = 1;
while (i < ac)
{
arg = av[i];
if (arg.compare("-n") == 0)
{
if ((team_name = verify_n(av, i)) == "")
return (-1);
i++;
}
else if (arg.compare("-p") == 0)
{
if ((port = verify_p(av, i)) == -1)
return (-1);
i++;
}
else if (arg.compare("-h") == 0)
{
if ((ip = verify_h(av, i)) == "")
return (-1);
i++;
}
else
{
std::cerr << "The option " << arg << " does not exist." << std::endl;
return (-1);
}
i++;
}
std::cout << "Team name is: " << team_name << "\nPort is: " << port << "\nIP is: " << ip << std::endl;
if (port != -1 && ip.compare("KO") != 0)
connect_to_server(team_name, port, ip);
return (0);
}
很明显,为什么我希望完全改变它以适应C ++风格。
最好的方法是什么?谈到C ++参数验证,采取什么样的正确途径?