2009-01-14 52 views
3

例如,使用的语法如下:简单的选项处理使用Boost库(C++)

-I [file] -A 1 2 3 

问:

如何检查是否指定了文件,另外如果(整数)值被指定。

我了解以下内容:

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

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

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

问候

回答

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_mapvm

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()矢量成员函数。

关于此的增强教程位于here