首页 > C/C++ > boost常用库之program_options

boost常用库之program_options

2015年9月10日
分类: C/C++ 标签: ,
发表评论 阅读评论

C++标准库本身不提供处理命令行参数的类,通常情况下需要手动“造轮子”。感谢boost,我们有了progam_options这个好用的类库。

  1. program_options简介该库允许开发者从命令行或者文件中获取(name,value)形式的程序选项,比如./mypro -P1 param1 –p2 param2。
    相较于自己手写代码处理程序参数,使用program_options具有以下优点:

    • 简单:库体积小巧,声明程序选项语法简单,自动转换选项值的类型并存储到变量中;
    • 更好的错误报告;
    • 可从任何地方读取选项:不仅限于命令行,文件甚至环境变量亦可,而这并不需要额外的代码量;
  2. 如何使用?
    • 确认编译boost生成了libboost_program_options.so库文件,并且确认头文件/boost/program_options.hpp存在。否则什么都干不了~
    • 源文件中#include <boost/program_options.hpp>
    • makefile中链接选项加入-lboost_program_options,当然编译选项include目录也得能找到program_options.hpp
  3. 例子

    //命名空间缩略名
    namespace po = boost::program_options;
    try {
    //使用类options_description声明程序选项描述信息
    po::options_description desc(“Allowed options”);
    //add_options方法用于声明选项信息,包括选项名称、值的信息(类型,默认参数等)、选项描述信息
    string filter;
    desc.add_options()
    (“help”, “produce help message”) //名称、描述
    “compression”, po::value<int>(), “set compression level”) //名称、值类型、描述
    (“filter,F”, po::value<string>(&filter)->default_value(“tcp port 80″), “set pcap filter”) //名称、值类型和默认参数、描述
    ;
    //从命令行解析并存储程序选项
    po::variables_map vm;
    po::store(po::parse_command_line(ac, av, desc), vm);
    po::notify(vm);
    //读取选项
    if (vm.count(“help”)) {
    cout << desc << “\n”; return 1;
    }
    if (vm.count(“compression”)) {
    cout << “Compression level was set to ” << vm[“compression”].as<int>() << “.\n”;
    }
    else {
    cout << “Compression level was not set.\n”;
    }
    }
    catch(…) {
    }

  4. 更多内容可参考Boost.Program_options
小赢理财-众安保险本息保障

零一积流|IT参考 原创文章,转载请注明出处: http://www.it-refer.com/2015/09/10/boost-program_options


您可能需要这些【参考资料】:
  1. 本文目前尚无任何评论.
您必须在 登录 后才能发布评论.