使用Boost库(C ++)进行简单的选项处理

时间:2009-01-14 02:52:30

标签: c++ boost

例如,使用以下语法:

 -I [file] -A 1 2 3

问题:

如何指定是否指定了文件,另外如果指定了三个(整数)值。

我理解以下内容:

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

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

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

此致

1 个答案:

答案 0 :(得分:4)

您使用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_map的{​​{1}}:

vm

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

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

这将返回一个包含3个整数的向量,您可以像任何法向量一样索引和使用它。要查看是否有特定的3,只需使用vm["myoption"].as< std::vector<int> >() 向量成员函数。

关于此的增强教程位于here