在树莓派里使用C++库boost

Posted caimouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在树莓派里使用C++库boost相关的知识,希望对你有一定的参考价值。

由于C++的高性能,在嵌入式或者树莓派这样的系统,采用这样的语言是非常合适的,这样可以在CPU性能不太高的场合,写出处理大量数据和功能的软件,并且运行速度飞快,这样既节省产品成本,又为社会节能作出贡献,因为可以大量节省CPU运算,就可以省电,就可以少浪费化石能源。

而对于linux这样的系统,采用boost库就更加方便了,因为很多功能已经进行封装,使用起来更加方便,不容易出错。那么本文,就来介绍一下怎么样简单地使用boost。

先要安装boost,可以采用源码安装,也可以使用编译库的方式来安装。采用源码安装,自己可以控制不同的版本,但这样需要自己编译,可能会花费比较多的时间。采用已经编译库的方式,就可以快速安装,往往没有最新的版本。

现在先以已经编译好的版本来作为例子。

运行下面的命令:

sudo apt-get install libboost-dev

就可以安装完成boost库,然后就是编写代码:

#include <iostream>
#include <string>
#include <boost/program_options.hpp>
 
namespace bpo = boost::program_options;
using namespace std;
 
int main(int argc, char const *argv[])

     //步骤1:构造选项描述器
     //选项描述起,其参数为该描述器名字
     bpo::options_description opts("all options");
     //选项存储器,继承自map容器
     bpo::variables_map vm;
 
     //步骤2:为选项描述器增加选项
     //其参数依次为:key,value的类型,该选项描述
     opts.add_options()
         ("filename", bpo::value<std::string>(), "the file name which want to be found")
         ("help", "this is a program to find a specified file");
 
     //步骤3:先对命令行输入的参数做解析,而后将其存入选项存储器
     //如果输入了未定义的选项,程序会抛出异常,所以对解析代码要用try-catch块包围
     try 
         //parse_command_line()对输入的选项做解析
         //store()将解析后的结果存入选项存储器
         bpo::store(bpo::parse_command_line(argc, argv, opts), vm);
      catch(...) 
         std::cout<<"Input option not exsited."<<std::endl;
         return -1;
     
 
     //步骤4:参数解析完毕,处理实际信息
     //count()检测该选项是否被输入
     if(vm.count("help"))  //若参数中有help选项
         //options_description对象支持流输出,会自动打印所有的选项信息
         std::cout<<opts<<std::endl;
     
     if(vm.count("filename")) 
         //variables_map(选项存储器)是std::map的派生类,可以像关联容器一样使用,
         //通过operator[]来取出其中的元素,但其内部的元素类型value_type是boost::any,
         //用来存储不确定类型的参数值,必须通过模版成员函数as<type>()做类型转换后,
         //才能获取其具体值
         std::cout<<"find"<<vm["filename"].as<std::string>()<<std::endl;
     
     if(vm.empty()) 
         std::cout<<"no options found"<<std::endl;
     
     return -1;

 进入目录进行编译:

g++-10.1  boost_main.cpp -lboost_program_options   -o boost

编译成功之后,就可以运行编译出来的程序:

./boost  --help

输出的结果如上图。

以上是关于在树莓派里使用C++库boost的主要内容,如果未能解决你的问题,请参考以下文章

在树莓派里搭建 Lighttpd 服务器

在树莓派里搭建 Lighttpd 服务器

树莓派里的文件复制到本地-scp命令

来自不同类的C++多个回调成员函数,没有std和boost

BOOST库c ++的问题

使用C++库boost的log功能时 error LNK2019: 无法解析的外部符号 “public: static void __cdecl boost::log::v2s_mt_nt6出错