博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
boost::algorithm(字符串算法库)
阅读量:5141 次
发布时间:2019-06-13

本文共 4663 字,大约阅读时间需要 15 分钟。

没什么说的,需要

#include

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
k = {"hello", "world", "123"}; std::cout << join(k, "-"); //输出结果为: hello-world-123

2.分割与合并字符串

std::string s("test stringa-test stringb-test stringc");    std::vector
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.查找字符串

这里复制粘贴一段

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!"
ifind_first() 从头查找字符串中的子字符串,返回这个子串在原串中的iterator_range迭代器(不区分大小写)

find_last() 从尾查找字符串中的子字符串,返回这个子串在原串中的iterator_range迭代器

ifind_last() 从尾查找字符串中的子字符串,返回这个子串在原串中的iterator_range迭代器(不区分大小写)

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!"
ifind_nth() 找到第n个匹配的子串(计算从0开始)(不区分大小写)

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!"
find_tail() 找到字符串的后n个字节

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.替换/删除字符串

replace_first() 从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串

 Example:
 string str1("hello world!");
 replace_first(str1, "hello", "Hello"); // str1 = "Hello world!"
replace_first_copy()  从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串,并且赋

值给另一个字符串

 Example:
 string str1("hello world!");
 string str2;
 str2 = replace_first_copy(str1, "hello", "Hello"); // str2 = "Hello world!"
ireplace_first()  从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串(不区分大小写

)

ireplace_first_copy()  从头找到第一个匹配的字符串,将其替换为给定的另外一个字符串,并且赋

值给另一个字符串(不区分大小写)

erase_first()   从头找到第一个匹配的字符串,将其删除
 Example:
 string str1("hello world!");
 erase_first(str1, "llo"); // str1 = "He world!"
erase_first_copy() 从头找到第一个匹配的字符串,将其删除,并且赋值给另一个字符串
 Example:
 string str1("hello world!");
 string str2;
 str2 = erase_first_copy(str1, "llo"); // str2 = "He world!"
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()

转载于:https://www.cnblogs.com/ysherlock/p/7822301.html

你可能感兴趣的文章
servlet的同步请求异步请求以及请求转发与重定型的区别
查看>>
delphi之TDataset
查看>>
[国家集训队]Crash的数字表格
查看>>
jenkins 判断是手动触发还是定时器触发
查看>>
各互联网名企面试题汇总(3)
查看>>
笔记03-.NET高级技术
查看>>
IO【转换流,打印流,序列化】
查看>>
cocostudio UI编辑器中UITextField输入框控件光标
查看>>
SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
查看>>
(1)Opengl ES 基础概念
查看>>
Information
查看>>
spring cron 定时任务
查看>>
仿taobao分类搜索实现
查看>>
四、HibernateUtil
查看>>
一文读懂比特币的软分叉
查看>>
dubbo简单测试
查看>>
闲谈在线订餐
查看>>
linux笔记本
查看>>
改造MIP获得搜索青睐,轻松完成SEO
查看>>
数据挖掘导论笔记2 数据集的类型
查看>>