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服务器和客户端,都是同步的方式,也就是说当接收数据时,不能参与别的事情执行的.如果在一个只有界面线程的程序里,又不想创建多线程,导致复杂程度的增加,在这种情况之下,我们还有一个方案可以 ...
随机推荐
- boost system
boost::system::error_code is the most basic class in Boost.System; it represents operating system-sp ...
- springboot2集成redis5报错:io.lettuce.core.RedisException: io.lettuce.core.RedisConnectionException: DENIED Redis is running in protected
报错信息如下: Caused by: io.lettuce.core.RedisException: io.lettuce.core.RedisConnectionException: DENIED ...
- Mybatis的运行原理
我们写的sql语句就在statementBuilder中. 整个mapper的信息都保存到configuration 1:根据配置文件创建SQLSessionFactory 先创建SqlSession ...
- 【CF1257A】Two Rival Students【思维】
题意:给你n个人和两个尖子生a,b,你可以操作k次,每次操作交换相邻两个人的位置,求问操作k次以内使得ab两人距离最远是多少 题解:贪心尽可能的将两人往两边移动,总结一下就是min(n-1,|a-b| ...
- flutter页面布局二
Stack 在flutter中,Stack表示堆的意思,可以用来实现页面的定位布局. Stack组件接收两个可选参数: alignment:配置所有子元素的显示位置 children:子组件 在 ...
- 解决“element表单验证输入的数字检测出来是string”的问题
form表单: 校验规则: 注意:一.数字类型的验证需要在 v-model 处加上 .number 的修饰符,这是 Vue 自身提供的用于将绑定值转化为 number 类型的修饰符.二.校验中是否添加 ...
- LOJ 3092 「BJOI2019」排兵布阵 ——DP
题目:https://loj.ac/problem/3092 同一个人的不同城堡之间没有什么联系,只是和<=m.所以对每个城堡的 s 个值排序,做一个 f[ i ][ j ] 表示第 i 个城堡 ...
- 2018-2019-2 《Java程序设计》第10周学习总结
20175319 2018-2019-2 <Java程序设计>第10周学习总结 教材学习内容总结 本周学习<Java程序设计>第十二章java多线程机制: - 进程与线程 程序 ...
- hbase 1.4 部署
centos 7 部署 hbase 1.4.11 版本 在部署 hbase 前,首先安装好 jdk 1.7 和 zookeeper 3.4.14 软件. 部署 zookeeper 软件,可以参考 zk ...
- SAS中的Order By - Proc Sort
SAS中的Order By - Proc Sort 1.排序proc sort proc sort在按数据集中某一个变量或几个变量的升序或降序将记录重新排列,并把结果保存在输出数据集中,如果不另外指定 ...