boost库:字符串处理
使用boost库的字符串处理之前,需要进行区域设置。类:std::locale,每个C++程序自动拥有一个此类的实例,不能直接访问全局区域设置。
全局区域设置可以使用类std::locale中的静态函数global()改变。
#include <locale>
#include <iostream> int main() {
std::locale::global(std::locale("German"));
std::locale loc;
std::cout << loc.name() << std::endl;
return ;
}
静态函数global()接受一个类型为std::locale的对象作为其唯一的参数。
正则表达式库 Boost.Regex
boost::regex 用于定义一个正则表达式库
boost::smatch可以保存搜索结果
#include <boost/regex.hpp>
#include <locale>
#include <iostream> int main() {
std::locale::global(std::locale("German"));
std::string s = "Boris Schaling";
boost::regex expr("\\w+\\s\\w+");
std::cout << boost::regex_match(s, expr) << std::endl;
return 0;
}
boost::regex_match()用于字符串与正则表达式的比较,字符串匹配正则表达式时返回true。
下面介绍一下boost string常用的算法接口:
. case conversiion
to_upper() 将输入字符串转换成大写。
to_upper_copy() 输入字符串不变,返回值为转换成大写的字符串。
to_lower() 将输入字符串转换成小写。
to_lower_copy() 输入字符串不变,返回值为转换成小写的字符串。
. trimming
trim_left() 将输入字符串左边的空格删除。
trim_left_copy() 输入字符串不变,返回去除左边空格的字符串。
trim_left_if() 将输入字符串左边符合条件的字符去除。trim_left_if("12hello", is_digit()), 输出 hello
trim_left_copy_if() 输入字符串不变,意思同上。 trim_right() 意思同left差不多。删除右边的空格
trim_right_if()
trim_right_copy()
trim_right_copy_if() trim() 删除首尾两端的空格。
trim_if()
trim_copy()
trim_copy_if()
. predicates
bool starts_with(input, test) 判断input是否以test为开端。
bool istarts_with(input, test) 判断input是否以test为开端,大小写不敏感。 bool ends_with(input, test) 判断input是否以test结尾。
bool iends_with(input, test) 判断input是否以test结尾, 大小写不敏感。 bool contains(input, test) 判断test是否在input里。
bool icontains(input, test) 判断test是否在input里,大小写不敏感。 bool equals(input, test) 判断input和test是否相等。
bool iequals(input, test) 判断input和test是否相等, 大小写不敏感。 bool lexicographical_compare() 按字典顺序检测input1是否小于input2。
bool ilexicographical_compare() 按字典顺序检测input1是否小于input2, 大小写不敏感。 bool all() 检测输入的每个字符是否符合给定的条件。
. find algorithms
iterator_range<string::iterator> find_first(input, search) 从input中查找第一次出现search的位置。
iterator_range<string::iterator> ifind_first(input, search) 从input中查找第一次出现search的位置,大小写不敏感。 iterator_range<string::iterator> find_last(input, search) 从input中查找最后一次出现search的位置。
iterator_range<string::iterator> ifind_last(input, search) 从input中查找最后一次出现search的位置,大小写不敏感。 iterator_range<string::iterator> find_nth(input, search, n) 从input中查找第n次(n从0开始)出现search的位置。
iterator_range<string::iterator> ifind_nth(input, search, n) 从input中查找第n次(n从0开始)出现search的位置,大小写不敏感。 iterator_range<string::iterator> find_head(input, n) 获取input开头n个字符的字串。
iterator_range<string::iterator> find_tail(input, n) 获取input尾部n个字符的字串。
iterator_range<string::iterator> find_token()
boost库:字符串处理的更多相关文章
- (三)Boost库之字符串处理
(三)Boost库之字符串处理 字符串处理一直是c/c++的弱项,string_algo库很好的弥补了这一点. string_algo 库算法命名规则: 前缀i : 有这个前缀表名算法的大小写不 ...
- (二)boost库之字符串格式化
(二)boost库之字符串格式化 程序中经常需要用到字符串格式化,就个人而言还是比较倾向于C格式的输出,如果只是打印日志,printf就够了,如果到生成字符串,获取你可以选择sprintf,但这些都是 ...
- boost::format(字符串格式化库)
这段时间学习boost库的使用,撰文一方面留以备用,另一方面就是shared精神. format主要是用来格式化std::string字符串以及配合std::cout代替C语言printf() 使用f ...
- 使用boost库生成 随机数 随机字符串
#include <iostream> #include <boost/random/random_device.hpp> #include "boost/rando ...
- 漫步Facebook开源C++库Folly之string类设计(散列、字符串、向量、内存分配、位处理等,小部分是对现有标准库和Boost库功能上的补充,大部分都是基于性能的需求而“重新制造轮子”)
就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列.字符串.向量.内存分配.位处理等,以满足大规模高性能的需求. 这里是folly的github地址:https:// ...
- boost库(条件变量)
1相关理念 (1)类名 条件变量和互斥变量都是boost库中被封装的类. (2)条件变量 条件变量是thread库提供的一种等待线程同步的机制,可实现线程间的通信,它必须与互斥量配合使用,等待另一个线 ...
- boost库学习之regex
一.背景 项目中许多地方需要对字符串进行匹配,比如根据指定的过滤字符串来过滤文件名.刚开始是排斥使用boost库的,第一,我不熟悉boost库:第二,如果引入第三方库,就会增加库的依赖,这样的后果是, ...
- boost库在工作(37)网络UDP服务端之七
前面介绍的都是网络TCP的服务器和客户端,其实还有UDP的服务器和客户端,同时也有同步和异步之分.UDP与TCP最大的区别,就是TCP是基于连接的,而UDP是无连接的.这里所谓的连接是指对方中断服务时 ...
- boost库在工作(39)网络UDP异步服务端之九
前面创建的UDP服务器和客户端,都是同步的方式,也就是说当接收数据时,不能参与别的事情执行的.如果在一个只有界面线程的程序里,又不想创建多线程,导致复杂程度的增加,在这种情况之下,我们还有一个方案可以 ...
随机推荐
- Linux系统重要文件(二)
Linux系统重要文件概述 一系统自动挂载文件 文件路径信息:/etc/fstab文件作用说明:实现存储设备自动挂载 [root@centos7 ~]# cat /etc/fstab # # /etc ...
- Git使用包括切换分支
- InputStream接口的常见实现类
一. FileInputStream FileInputStream可以从系统文件中获取输入字节,也从可以从诸从图象数据的的原始字节流中读取. 如果是读取字符串流,推荐使用FileReader. 感觉 ...
- STM32 NVIC中断优先级分组说明
STM32F103系列上面,又只有60个可屏蔽中断(在107系列才有68个) 中断管理方法 首先,对STM32中断进行分组,组0~4.同时,对每个中断设置一个抢占优先级和一个响应优先级值. 分组配置是 ...
- 高并发大流量专题---5、CDN加速
高并发大流量专题---5.CDN加速 一.总结 一句话总结: CDN就是多整几台节点服务器,选距离用户最近的服务器来给用户服务,实现的话可以用阿里云.腾讯云他们提供的功能,简单方便,妈妈再也不用担心我 ...
- APIO2010 特别行动队 & 斜率优化DP算法笔记
做完此题之后 自己应该算是真正理解了斜率优化DP 根据状态转移方程$f[i]=max(f[j]+ax^2+bx+c),x=sum[i]-sum[j]$ 可以变形为 $f[i]=max((a*sum[j ...
- IDEA默认快捷键
idea常用快捷键大全 Idea常用快捷键大全,拿小本本记下来,忘记了可以方便查找.编写代码Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最 ...
- (二)linux内核准备及编译
1. 内核下载地址 linux内核网站,可以拿到最新的和最近的稳定版本内核: https://www.kernel.org/ 通过网站下载压缩包后解压或者使用git下载到本地: git clone h ...
- COALESCE 函数作用
用途. 将空值替换成其他值 返回第一个非空值. 任意一个不为空的值.比较有用.
- idhttp提交post
var Param:TStringList; RStream:TMemoryStream;begin Param:=TStringList.Create; RStream:=TMemoryStream ...