boost::algorithm(字符串算法库)
没什么说的,需要
#include<boost/algorithm/string.hpp>
1.大小写转换
std::string s("test string");
boost::to_upper(s);//转换为大写
boost::to_lower(s);//转换为小写
std::string str1=boost::to_lower_copy(s);//小写转换并赋值
std::string str2=boost::to_upper_copy(s);//大写转换并赋值
std::array<string, 3> k = {"hello", "world", "123"};
std::cout << join(k, "-"); //输出结果为: hello-world-123
2.分割与合并字符串
std::string s("test stringa-test stringb-test stringc");
std::vector<std::string> sv;
boost::split(sv,s,boost::is_any_of("-"),boost::token_compress_on);
//Now,sv={"test stringa","test stringb","test stringc"};
3.去掉字符串两边空格
std::string s(" test string ");
boost::trim_left(s);//去掉字符串左边空格
boost::trim_right(s);//去掉字符串右边空格
//现在s="test string"
//boost::trim_left_copy(s)和boost::trim_right_copy(s)表示去掉后赋值
trim_left_copy_if() 将字符串开头的符合我们提供的“谓词”的特定字符去掉,并且赋值给另一个字符串
string str1(" hello world! ");
string str2;
str2 = trim_left_copy_if(str1, NotH); // str2 == "ello world! "
总结一下就是凡是有copy就是指向后赋值,有if就判断谓词
3.谓词
std::string s("test string");
boost::starts_with("test");//判断字符串是否以一个字符串开始,返回bool
std::string a("sss");
std::string b("sss");
boost::equal(a,b);//判断字符串是否完全匹配
std::string s("test string");
boost::contains("te");//判断字符串是否含有某字符串
boost::ends_with("ing");//判断字符串是否以另一个字符串结尾;
// boost::iends_with()同上只是不区分大小写
all()判断字符串中的所有字符是否全部满足这个谓词
std::string s("test string");
bool str_equal(const std::string p){
if(boost::equal(p,"test string"))
return true;
return false;
}
boost::all(s,str_equal);
4.查找字符串
1 find_first() 从头查找字符串中的子字符串,返回这个子串在原串中的iterator_range迭代器
Example:
char ToUpper(char &ch)
char ToUpper(char &ch)
{
if(ch <= 'z' && ch >= 'a')
return ch + 'A'-'a';
else
return ch;
}
...
string str1("hello dolly!");
iterator_range<string::iterator> result = find_first(str1,"ll");
transform( result.begin(), result.end(), result.begin(), ToUpper ); // str1 == "heLLo dolly!"
2 ifind_first() 从头查找字符串中的子字符串,返回这个子串在原串中的iterator_range迭代器(不区分大小写)
3 find_last() 从尾查找字符串中的子字符串,返回这个子串在原串中的iterator_range迭代器
4 ifind_last() 从尾查找字符串中的子字符串,返回这个子串在原串中的iterator_range迭代器(不区分大小写)
5 find_nth() 找到第n个匹配的子串(计算从0开始)
Example:
string str1("hello dolly!");
iterator_range<string::iterator> result = find_nth(str1,"ll", 1);
transform( result.begin(), result.end(), result.begin(), ToUpper ); // str1 == "hello doLLy!"
6 ifind_nth() 找到第n个匹配的子串(计算从0开始)(不区分大小写)
7 find_head() 找到字符串的前n个字节
Example:
string str1("hello dolly!");
iterator_range<string::iterator> result = find_head(str1,5);
transform( result.begin(), result.end(), result.begin(), ToUpper ); // str1 == "HELLO dolly!"
8 find_tail() 找到字符串的后n个字节
9 find_token() 找到符合谓词的串
Example:
char Add1(const char &ch)
{
return ch+1;
}
...
string str1("hello 1 world!");
iterator_range<string::iterator> result = find_token(str1,is_123digit);
transform( result.begin(), result.end(), result.begin(), Add1 ); // str1 == "hello 2 world!");
10 find_regex() 匹配正则表达式
Example:(等稍候了解了boost的正则表达式后再给出)
11 find() 使用自己写的查找函数
Example:
iterator_range<string::iterator>
MyFinder1( std::string::iterator begin, std::string::iterator end )
{
std::string::iterator itr;
for(itr = begin;itr!=end;itr++)
{
if((*itr) == '1')
{
std::string::iterator preitr = itr;
iterator_range<string::iterator> ret(preitr, ++itr);
return ret;
}
}
return iterator_range<string::iterator>();
} // boost自己也提供了很多Finder
...
string str1("hello 1 world!");
iterator_range<string::iterator> result = find(str1,MyFinder1);
transform( result.begin(), result.end(), result.begin(), Add1 ); // str1 == "hello 2 world!");
5.替换/删除字符串
1 replace_first() 从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串
Example:
string str1("hello world!");
replace_first(str1, "hello", "Hello"); // str1 = "Hello world!"
2 replace_first_copy() 从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串,并且赋
值给另一个字符串
Example:
string str1("hello world!");
string str2;
str2 = replace_first_copy(str1, "hello", "Hello"); // str2 = "Hello world!"
3 ireplace_first() 从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串(不区分大小写
)
4 ireplace_first_copy() 从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串,并且赋
值给另一个字符串(不区分大小写)
5 erase_first() 从头找到第一个匹配的字符串,将其删除
Example:
string str1("hello world!");
erase_first(str1, "llo"); // str1 = "He world!"
6 erase_first_copy() 从头找到第一个匹配的字符串,将其删除,并且赋值给另一个字符串
Example:
string str1("hello world!");
string str2;
str2 = erase_first_copy(str1, "llo"); // str2 = "He world!"
7 ierase_first() 从头找到第一个匹配的字符串,将其删除(不区分大小写)
8 ierase_first_copy() 从头找到第一个匹配的字符串,将其删除,并且赋值给另一个字符串(不区分大
小写)
// 与上面类似,不过是从字符串尾开始替换
9 replace_last()
10 replace_last_copy()
11 ireplace_last()
12 ireplace_last_copy()
13 erase_last()
14 erase_last_copy()
15 ierase_last()
16 ierase_last_copy()
boost::algorithm(字符串算法库)的更多相关文章
- boost::format(字符串格式化库)
这段时间学习boost库的使用,撰文一方面留以备用,另一方面就是shared精神. format主要是用来格式化std::string字符串以及配合std::cout代替C语言printf() 使用f ...
- boost字符串算法
boost::algorithm简介 2007-12-08 16:59 boost::algorithm提供了很多字符串算法,包括: 大小写转换: 去除无效字符: 谓词: 查找: 删除/替换: 切割: ...
- C++神奇算法库——#include<algorithm>
算法(Algorithm)为一个计算的具体步骤,常用于计算.数据处理和自动推理.C++ 算法库(Algorithms library)为 C++ 程序提供了大量可以用来对容器及其它序列进行算法操作的函 ...
- boost::algorithm用法详解之字符串关系判断
http://blog.csdn.net/qingzai_/article/details/44417937 下面先列举几个常用的: #define i_end_with boost::iends_w ...
- C++ algorithm算法库
C++ algorithm算法库 Xun 标准模板库(STL)中定义了很多的常用算法,这些算法主要定义在<algorithm>中.编程时,只需要在文件中加入#include<algo ...
- 字符串算法(string_algorithm)
format 作用 格式化输出对象,可以不改变流输出状态实现类似于printf()的输出 头文件 #include <boost/format.hpp> using namespace b ...
- OpenSSL密码算法库: MD5示例小程序
OpenSSL http://www.openssl.org/ OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL 的密码算法库包含多种加密算 ...
- C++的字符串格式化库
这里向大家介绍一个C++的字符串格式化库,叫cpptempl,这个库支持对字符串格式的条件,循环,变量插入.看上去很不错,只不过其是基于boost库的. 下面是一个例子: 1 2 3 4 5 6 7 ...
- boost split字符串
boost split string , which is very convenience #include <string> #include <iostream> #in ...
随机推荐
- 十、Hadoop学习笔记————Hive与Hbase以及RDBMS(关系型数据库)的关系
Hive目的是为了简化MapReduce编程 实际应用中,Hive与Hbase不经常链接
- Winform控件Tag使用规范
背景 Tag在WinForm控件中经常被用来存储临时数据,类型为object,但是当程序中多个地方使用到Tag时,容易造成Tag使用的混乱,Tag是如此重要的一个属性,应该要好好考虑下如何有效的使用T ...
- Flex布局学习笔记
任何元素都可以使用Flex布局,包括行内元素 display: flex; display: inline-flex使用Flex布局之后,子元素的float, clear, vertical-alig ...
- Mysql--数据的操作
1.插入数据 1.1 插入完整数据记录 语法1: 例子: 语法2: 例子: 1.2 插入数据记录一部分 语法: 例子: 1.3 插入多条数据记录 1.插入多条完整的数据 语法: 例子: 插入多条部 ...
- 《Linux命令行与shell脚本编程大全》第十九章 初识sed和gawk
这两个工具能够极大简化需要进行的数据处理任务. 19.1 文本处理 能轻松实现自动格式化.插入.修改或删除文本元素的简单命令行编辑. sed和gawk就具备上述功能 19.1.1 sed编辑器 被称为 ...
- mysql常用的操作
数据库的常用操作:create database db1; #创建数据库show databases; #查看所有数据库show create database db1;#查看创建的指定数据库alte ...
- angular中复制文字到剪切板
function copyToClipboard(oElement, value) { var aux = document.createElement("input"); if ...
- 一个PHP高性能、多并发、restful的工具库(基于multi_curl)
This is high performance curl wrapper written in pure PHP. It's compatible with PHP 5.4+ and HHVM. N ...
- Python冒号的解释
1. "没什么首次没有为第二个,跳了三个".它得到的切片序列的每一个第三个项目. 扩展片是你想要的.新在Python 2.3 2. Python的序列切片地址可以写成[开始:结束: ...
- Linux正则表达式语法
基本组成部分: 正则表达式的基本组成部分. 正则表达式 描述 示例 \ 转义符,将特殊字符进行转义,忽略其特殊意义 a\.b匹配a.b,但不能匹配ajb,.被转义为特殊意义 ^ 匹配行首,awk中,^ ...