【问题标题】:Simple option handling using Boost library (C++)使用 Boost 库 (C++) 进行简单的选项处理
【发布时间】:2009-01-14 02:52:29
【问题描述】:

例如,使用以下语法:

 -I [file] -A 1 2 3

问题:

如何检查是否指定了文件以及是否指定了三个(整数)值。

我了解以下内容:

po::options_descriptions desc("Allowed options");
desc.add_options()

然后如何使用指定的参数,例如:

    if (argv[3] == 1) {
        ...
    }

问候

【问题讨论】:

    标签: c++ boost


    【解决方案1】:

    您使用variables_map 检查是否指定了选项。如果您添加了一个名为"file" 的选项,并且您的variables_map 被称为vm

    if(vm.count("myoption")) { ... } // Returns 0 if myoption not specified. 1 or more if it was.
    

    一旦您使用add_options 添加了一些选项,您就可以像这样访问它们,假设您已经设置了一个名为variables_mapvariables_map

    vm["myoption"].as<int>() // Will return an int, assuming your option is an int
    vm["myoption"].as<std::string>() // Will return an std::string, assuming your option is an int
    

    在您的情况下,您希望将指定的选项之一转换为整数序列。你可以这样做:

    vm["myoption"].as< std::vector<int> >()
    

    这将返回一个包含 3 个整数的向量,您可以像任何普通向量一样对其进行索引和使用。看具体有没有3个,用size()向量成员函数即可。

    这方面的boost教程位于here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多