C++ Boost::program_选项-如果未提供输入,则打印使用情况

C++ Boost::program_选项-如果未提供输入,则打印使用情况,c++,boost,boost-program-options,C++,Boost,Boost Program Options,我试图使用Boost program_选项来解析我的程序输入。通常,文档提供解析所需的信息。然而,我想让我的程序在没有输入的情况下打印使用说明,我似乎无法理解。似乎没有“默认”选项,我也找不到如何计算(测试)提供的输入数量 这是我目前的代码: boost::program_options::options_description help("Usage"); help.add_options() ("help", "print help info"); boost::program_o

我试图使用Boost program_选项来解析我的程序输入。通常,文档提供解析所需的信息。然而,我想让我的程序在没有输入的情况下打印使用说明,我似乎无法理解。似乎没有“默认”选项,我也找不到如何计算(测试)提供的输入数量

这是我目前的代码:

boost::program_options::options_description help("Usage");
help.add_options()
    ("help", "print help info");

boost::program_options::options_description req("Required inputs");
req.add_options()
    ("root", boost::program_options::value<std::string>(&images_root), "Root directory")

boost::program_options::options_description opt("Option inputs");
opt.add_options()
    ("verbose", boost::program_options::value<bool>(&verbose)->implicit_value(1), "Verbose");

boost::program_options::variables_map vm;
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, all), vm);
if (vm.count("help"))
{
    std::cout << help;
    return 1;
}

boost::program_options::notify(vm);

您可以使用
argc

例如:

int main(int argc, char** argv)
{
    if( argc <= 1 )
      std::cout << "Print Usage\n";

  return 0;
}
int main(int argc,char**argv)
{

if(argc)自定义验证器功能如何?我同意@Roby。在这种情况下,只需将行:
if(vm.count(“help”)
更改为
if(vm.count(“help”)|(argc==0))
@kenba,你错了。0参数是程序名本身(即,如果没有解析参数,argh是1)。对不起@Roby,所以它变成了
if(vm.count(“help”)|”)(argc
int main(int argc, char** argv)
{
    if( argc <= 1 )
      std::cout << "Print Usage\n";

  return 0;
}