来自 http://www.linuxidc.com/Linux/2011-07/39215.htm,拷贝第一页如下

Boost学习系列

简介及基本用法

[日期:2011-07-25] 来源:Linux社区  作者:JuanA1 [字体: ]
 

在 做长字符串匹配、搜索的问题时,我想大家最先想到的应该就是使用正则表达式,简单、高效。而Boost的Regex库则是不得不提的,很早之前我就接触过 了Boost的这个模块,也对Boost了解了一点点,只是觉得它很NB,没做深究。昨天在网上无意中看到了Highscore的Boost C++库系列教程,很是感兴趣,如此现代又有前途的库,是程序员提升自身技巧和竞争力的有力武器,值得一学。因此我打算和他一样做个系列连载,争取能有自 己的一点想法,再解答下每一章的练习题。今天先开个头,简单介绍下Boost库以及它的使用方法。

一、简介

Boost C++ 库是一组基于C++标准的现代库,其源码按 Boost Software License 来发布,允许任何人自由地使用、修改和分发。 这些库是平台独立的,且支持大多数知名和不那么知名的编译器。Boost 社区负责开发和发布 Boost C++ 库。 社区由一个很大的C++开发人员群组组成,这些开发人员来自于全球,他们通过网站 http://www.boost.org/ 以及几个邮件列表相互协调。 社区的使命是开发和收集高质量的库,作为C++标准的补充。 那些被证实有价值且对于C++应用开发非常重要的库,将会有很大机会在某天被纳入C++标准中。

Boost 社区在1998年左右出现,当时刚刚发布了C++标准的第一个版本。从那时起,社区就不断地扩大,现在已成为C++标准化工作中的一个重要角色。虽然 Boost 社区与标准化委员会之间没有直接的关系,但有部分开发者同时活跃于两方。下一个版本的C++标准很大可能在2011年通过,其中将扩展一批库,这些库均起 源于 Boost 社区。

要增强C++项目的生产力,除了C++标准以外,Boost C++ 库是一个不错的选择。由于当前版本的C++标准在2003年修订之后,C++又有了新的发展,所以 Boost C++ 库提供了许多新的特性。由于有了 Boost C++ 库,我们无需等待下一个版本的C++标准,就可以立即享用C++演化中取得的最新进展。

Boost C++ 库具有良好的声誉,这基于它们的使用已被证实是非常有价值的。现在的面试询问关于Boost C++ 库知识的也越来越常见了,因为知道这些库的开发人员通常也清楚C++的最新创新,并且能够编写和理解现代的C++代码。

很多Boost中的库功能堪称是对语言功能的扩展,其构造用尽精巧的手法,但是注意,不要贸然的花费时间研读。比如Graph这样的库则是具有工业强度,结构良好,非常值得研读的精品代码,并且也可以放心的在产品代码中多多利用。

二、安装

最新版的Boost库可以在这里下 载。安装Boost库需要花不少时间,由于这些库均带有源代码,其中大多数库只包含头文件,可以直接使用,但也有一些库需要编译。为了尽可能容易安 装,Boost提供了一个Boost Jam进行自动安装,进而无需逐个库进行检查和编译。如果要使用这个,就需要使用一个bjam的程序,它也是有源代码的,所以自然的适用于多种系统。它支 持许多操作系统和编译器,并且知道如何基于适当的配置文件来编译单个库。当然也可以单独编译,Boost可以支持多种编译器,VC、gcc、intel- linux等,也说明了它的可移植性。Windows下就无需多说了,网上很多教程,linux下也不用多说,安装方法都在/libs/库名/doc /install.html中写的很详细,有什么疑问可以看我的博文《Linux下源码安装的经验总结》 http://www.linuxidc.com/Linux/2011-07/39217.htm,实在搞不定也可以留言给我,我尽力帮助。

三、一个例程

下面的例子是对正则表达式Regex库的使用方法:

  1. #include "stdafx.h"
  2. #include <cstdlib>
  3. #include <stdlib.h>
  4. #include <boost/regex.hpp>
  5. #include <string>
  6. #include <iostream>
  7. using namespace std;
  8. using namespace boost;
  9. regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");//定义正则表达式expression
  10. int main(int argc, char* argv[])
  11. {
  12. std::string in;
  13. cmatch what;
  14. cout << "enter test string" << endl;
  15. getline(cin,in);
  16. if(regex_match(in.c_str(), what, expression))//regex_match:匹配算法,用于测试一个字符串是否和正则式匹配
  17. {
  18. for(int i=0;i<what.size();i++)
  19. cout<<"str :"<<what[i].str()<<endl;
  20. }
  21. else
  22. {
  23. cout<<"Error Input"<<endl;
  24. }
  25. return 0;
  26. }
  27. ==============
  28. 结果
  29. 输入:select name from table
  30. 输出:str:select name from table
  31. str:name
  32. str:table

看到了吧,它很简洁的挑出了目标字符串。这里只是简单演示一下boost的使用,至于详细分析到了特定章节再说。

四、主要库简介

主要的库的介绍都在下表中,后面我也将根据教程一点点解析各个库。

【内容导航】
第1页:简介及基本用法 第2页:智能指针(上)
第3页:智能指针(下) 第4页:函数对象(上)
第5页:函数对象(下) 第6页:事件处理(上)
第7页:事件处理(下) 第8页:字符串处理-(上)
第9页:字符串处理-(下) 第10页:多线程(上)
第11页:多线程(下)  

Boost学习-Linuxidc上的很好的学习资料的更多相关文章

  1. Matlab2014下载和破解方法,以及Matlab很好的学习网站

    ISO镜像下载地址链接: http://pan.baidu.com/s/1i31bu5J 密码: obo1  单独破解文件下载链接: http://pan.baidu.com/s/1c0CGQsw 密 ...

  2. 推荐GitHub上10 个开源深度学习框架

    推荐GitHub上10 个开源深度学习框架   日前,Google 开源了 TensorFlow(GitHub),此举在深度学习领域影响巨大,因为 Google 在人工智能领域的研发成绩斐然,有着雄厚 ...

  3. 很具体GC学习笔记

    GC学习笔记 这是我公司同事的GC学习笔记,写得蛮具体的,由浅入深,循序渐进,让人一看就懂,特转到这里. 一.GC特性以及各种GC的选择 1.垃圾回收器的特性 2.对垃圾回收器的选择 2.1 连续 V ...

  4. 平面上的地图搜索--Java学习笔记(四)

    版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 这一个月以来,都在学习平面上的地图搜索,主 ...

  5. C++中多态性学习(上)

    多态性学习(上) 什么是多态? 多态是指同样的消息被不同类型的对象接收时导致不同的行为.所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数.虽然这看上去好像很高级的样子 ...

  6. 学习java需要英语很好吗?

    学习java需要英语很好吗? 编程语言起源于美国,是由英文构成的,其中包括几十个英文的关键字以及几百个英文的函数,除非需要对文本进行处理,否则一般不会出现中文.但是,它们都是孤立的单词,不构成任何语句 ...

  7. 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

    20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...

  8. learn more ,study less(二):整体性学习技术(上)

    前言:在学习整体性学习概念时,一个很好的方法是把它比喻成下棋,首先你要了解下棋的 基本规则和基本目标,本书第一部分可以看做是介绍关于整体性学习的一整套规则和目标. 一旦你理解了下棋的基本规则,你就要开 ...

  9. 【干货】史上最全的Tensorflow学习资源汇总

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:AI小昕 在之前的Tensorflow系列文章中,我们教大家 ...

随机推荐

  1. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  2. CCPC-Wannafly Winter Camp Day5 Div1 - Sorting - [线段树]

    题目链接:https://zhixincode.com/contest/22/problem/I?problem_id=314 样例输入 1 5 9 31 5 3 2 41 1 52 1 51 1 1 ...

  3. [No0000CA]什么是“普瑞马法则”?以及 如何利用“普瑞马法则”,三步克服惰性

    一般在学习和生活中,我们都可能有这样的经验,就是当说想要作某件事情的时候,但过了好久发现还是没有做:或者觉得有力气使不出来:或者总觉得生活是灰色和抑郁的等等. 这类情况反映在生活中,就是生活好像总是被 ...

  4. wslgit

    @echo off setlocal enabledelayedexpansion set command=%* If %PROCESSOR_ARCHITECTURE% == x86 ( echo | ...

  5. C和C指针小记(六)-基本声明、指针声明、typedef 、常量、作用域、链接属性、存储类型、static

    1.变量的声明 声明变量的基本形式: 说明符号(一个或者多个) 声明表达式列表 说明符 (specifier) 包含一些关键字,用于描述被声明的标识符的基本类型,它也可用户改变标识符的缺省存储类型和作 ...

  6. echart四川地图

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. grp/从Zipkin到Jaeger,Uber的分布式追踪之道tchannel--zipkin with mysql in docker-compose

    GRPC----http://www.cnblogs.com/ghj1976/p/4587736.html https://blog.csdn.net/fei33423/article/details ...

  8. MiniHook研究

    git hub 地址: https://github.com/RaMMicHaeL/minhook

  9. py 正则表达式 List的使用, cxfreeze打包

    从index.html当做检索出压缩文件,index.html的内容如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN& ...

  10. 转:EL表达式的11个内置对象

    原文地址:https://blog.csdn.net/qq_17045385/article/details/54799998 EL是JSP内置的表达式语言 JSP2.0开始,不让再使用Java脚本, ...