zoukankan      html  css  js  c++  java
  • 树莓派上安装boost库

    一、安装boost库

    sudo apt-get install libboost-dev
    aptitude search boost

    二、编写测试代码

     1 #include <iostream>
     2 #include <string>
     3 #include <boost/program_options.hpp>
     4 
     5 namespace bpo = boost::program_options;
     6 using namespace std;
     7 
     8 int main(int argc, char const *argv[])
     9 {
    10     //步骤1:构造选项描述器
    11     //选项描述起,其参数为该描述器名字
    12     bpo::options_description opts("all options");
    13     //选项存储器,继承自map容器
    14     bpo::variables_map vm;
    15 
    16     //步骤2:为选项描述器增加选项
    17     //其参数依次为:key,value的类型,该选项描述
    18     opts.add_options()
    19         ("filename", bpo::value<std::string>(), "the file name which want to be found")
    20         ("help", "this is a program to find a specified file");
    21 
    22     //步骤3:先对命令行输入的参数做解析,而后将其存入选项存储器
    23     //如果输入了未定义的选项,程序会抛出异常,所以对解析代码要用try-catch块包围
    24     try {
    25         //parse_command_line()对输入的选项做解析
    26         //store()将解析后的结果存入选项存储器
    27         bpo::store(bpo::parse_command_line(argc, argv, opts), vm);
    28     } catch(...) {
    29         std::cout<<"Input option not exsited."<<std::endl;
    30         return 0;
    31     }
    32 
    33     //步骤4:参数解析完毕,处理实际信息
    34     //count()检测该选项是否被输入
    35     if(vm.count("help")) { //若参数中有help选项
    36         //options_description对象支持流输出,会自动打印所有的选项信息
    37         std::cout<<opts<<std::endl;
    38     }
    39     if(vm.count("filename")) {
    40         //variables_map(选项存储器)是std::map的派生类,可以像关联容器一样使用,
    41         //通过operator[]来取出其中的元素,但其内部的元素类型value_type是boost::any,
    42         //用来存储不确定类型的参数值,必须通过模版成员函数as<type>()做类型转换后,
    43         //才能获取其具体值
    44         std::cout<<"find"<<vm["filename"].as<std::string>()<<std::endl;
    45     }
    46     if(vm.empty()) {
    47         std::cout<<"no options found"<<std::endl;
    48     }
    49     return 0;
    50 }

    编译时要加上库名字:

    g++ -o s main.cpp -lboost_program_options

    使用效果:

    pi@raspberrypi:~/chen_DIR/weihua/myoptions $ ./s --help
    all options:
      --filename arg        the file name which want to be found
      --help                this is a program to find a specified file
    
    pi@raspberrypi:~/chen_DIR/weihua/myoptions $ ./s --filename s
    finds
    无欲速,无见小利。欲速,则不达;见小利,则大事不成。
  • 相关阅读:
    Java并发编程(二)线程任务的中断(interrupt)
    Java并发编程(一) 两种实现多线程的方法(Thread,Runnable)
    青蛙跳台阶(Fibonacci数列)
    旋转数组的最小值
    用两个栈实现队列
    重建二叉树
    二维数组中的查找
    Lab 3-1
    Lab 1-4
    Lab 1-3
  • 原文地址:https://www.cnblogs.com/ch122633/p/8690235.html
Copyright © 2011-2022 走看看