具有面向对象的思维模式来验证程序参数

时间:2016-06-13 08:53:30

标签: c++ arguments

我需要验证传递给我的程序的选项,如下所示:

./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 ++参数验证,采取什么样的正确途径?

0 个答案:

没有答案