boost之string_algo
string_algo是用于处理字符串查找,替换,转换等一系列的字符串算法
前缀i:表示大小写不敏感
后缀_copy:表示不变动输入,返回处理结果的拷贝
后缀_if:表示算法需要一个判断式的谓词函数对象。
#include <iostream>
#include <vector>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost; int main()
{
string str("readme.txt");
if (ends_with(str,"txt"))//判断后缀
{
cout << to_upper_copy(str) + " UPPER" <<endl;//大写
}
replace_first(str,"readme","followme");//替换
cout << str <<endl;
vector<char> v(str.begin(),str.end());
vector<char> v2 = to_upper_copy(erase_first_copy(v,"txt"));
for (int i = 0;i < v2.size();++i)
{
cout << v2[i];
}
return 0;
}
1.大小写转换,如上。
2.判断式
2.1判断式(算法),用于子串的匹配
starts_with
ends_with
contains
equals
lexicographcical_compare
#include <iostream>
#include <vector>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost; int main()
{
string str("Power Bomb");
if (iends_with(str,"bomb"))
{
cout << "success iends_with" <<endl;
}
if (ends_with(str,"bomb"))
{
cout << "success ends_with" <<endl;
}
if (contains(str,"er"))
{
cout << "success contains" <<endl;
} return 0;
}
2.2.判断式(函数对象)用于字符串之间的比较
#include <iostream>
#include <vector>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost; int main()
{
string str1("Samus");
string str2("samus");
if (is_equal()(str1,str2))
{
cout << "is equal" <<endl;
}
if (is_less()(str1,str2))
{
cout << "is less" <<endl;
} return 0;
}
2.3.分类(返回函数对象)用于分类
is_space判断字符是否为空格
is_alnum判断是否为字符或者数字
3.修剪
trim_left,trim_right,trim删除左右两端的空格,使用谓词判断if
#include <iostream>
#include <vector>
#include <string>
#include <boost/format.hpp>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost; int main()
{
format fmt("%s\n");
string str = " samus aran";
cout << fmt % trim_copy(str);
cout << fmt % trim_left_copy(str);
trim_right(str);
cout << fmt % str; string str2 = "2013 Happy lin Year!";
cout << fmt % trim_left_copy_if(str2,is_digit());
cout << fmt % trim_right_copy_if(str2,is_punct()); return 0;
}
4. 查找
find_first 查找字符串第一次出现的位置
find_last 查找字符串最后一次出现的位置
#include <iostream>
#include <vector>
#include <string>
#include <boost/format.hpp>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost; int main()
{
format fmt("%s\n.pos=%d\n");
string str = "Long long ago,there was a king.";
iterator_range<string::iterator> rge;
rge = find_first(str,"long");
cout << fmt % rge % (rge.begin()-str.begin()); return 0;
}
5.替换和删除与查找类似
#include <iostream>
#include <vector>
#include <string>
#include <boost/format.hpp>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost; int main()
{
string str = "Samus beat the monster.\n";
cout << replace_first_copy(str,"Samus","samus");
replace_first(str,"beat","kill");
cout <<str; return 0;
}
6.分割
#include <iostream>
#include <vector>
#include <string>
#include <deque>
#include <list>
#include <boost/format.hpp>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost; int main()
{
string str = "Smaus,Link.Zelda::Mario_Luigi+zelda";
deque<string> d;
ifind_all(d,str,"zELDA");
if (d.size())
{
cout << "split right" <<endl;
}
list<string> l;
split(l,str,is_any_of(",.:_+"));
for (list<string>::iterator it = l.begin();it != l.end();++it)
{
cout << *it <<endl;
} return 0;
}
7.合并
#include <iostream>
#include <vector>
#include <string> #include <boost/assign.hpp>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
using namespace boost::assign; int main()
{
vector<string> v = list_of("liuwei")("linlin")("ceshi");
cout << join(v,"+")<<endl;
struct is_contains_i
{
bool operator()(const string &x)
{
return contains(x,"i");
}
};
cout << join_if(v,"****",is_contains_i());
return 0;
}
boost之string_algo的更多相关文章
- 【Boost】boost::string_algo详解2——find相关函数
来自: https://blog.csdn.net/huang_xw/article/details/8276123 函数声明: template<typename Range1T, typ ...
- (三)Boost库之字符串处理
(三)Boost库之字符串处理 字符串处理一直是c/c++的弱项,string_algo库很好的弥补了这一点. string_algo 库算法命名规则: 前缀i : 有这个前缀表名算法的大小写不 ...
- Boost程序库完全开发指南——深入C++“准”标准库(第3版)
内容简介 · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ...
- boost学习目录
Boost之数值转换lexical_cast https://www.cnblogs.com/TianFang/archive/2013/02/05/2892506.html Boost之字符串算法s ...
- Boost 常用的库
boost是一系列C++模板库组成的免费,可移植,开源的程序库.网络上关于boost的文章已经很多. 这里摘记一些库的信息,供自己日后参考. 0.foreach - BOOST_FOREACH ...
- boost::bind 学习
最近学习了太多与MacOS与Iphone相关的东西,因为不会有太多人有兴趣,学习的平台又是MacOS,不太喜欢MacOS下的输入法,所以写下来的东西少了很多. 等我学习的东西慢慢的与平台无关的时 ...
- boost - 正则表达式xpressive
正则表达式是一套处理文本强有力的工具: 它使用一套复杂的语法规则,可以解决文本处理领域的绝大多数问题; 而这些问题通常是字符串算法很难甚至无法解决的. C++98标准中没有内置的正则表达式支持,使得 ...
- boost开发指南
C++确实很复杂,神一样的0x不知道能否使C++变得纯粹和干爽? boost很复杂,感觉某些地方有过度设计和太过于就事论事的嫌疑,对实际开发工作的考虑太过于理想化.学习boost本身就是一个复杂度,有 ...
- Boost总结汇总
从开始接触Boost已经有好几年了,而对它的掌握却难言熟悉,有对它部分的源代码的剖析也是蜻蜓点水.有时间一点点梳理一下吧. 1. 概述 [Boost]C++ Boost库简介[Boost]C++ Bo ...
随机推荐
- linux 实时显示文件的内容
1. watch -n 1 aa.txt #每个1秒显示aa.txt的内容 2. tail -f ***.log Linux shell中有一个tail命令,常用来显示一个文件的最后n行文档内容 但 ...
- JAVA方法传递参数:传值?传引用?
先来看下面这三段代码: //Example1: public class Example1 { static void check(int a) { a++; } public static void ...
- UIWebView加上safari风格前进后退按钮(转)
今天在写程序内打开网页的功能,写工具条的时候发现系统图标里面竟然没有后退按钮,,由于我这个是静态库工程,不可能自己弄张图上去,不然使用本库的时候还得附上图片,经过一下午的搜索,终于找到个比较靠谱的,这 ...
- Ecshop提示Only variables should be passed by reference in错误
Ecshop是个坑爹货,为什么tiandi会说它是个坑爹货呢,请看一下下面的官方的运行环境推荐: 服务器端运行环境推荐·php版本5.0以上5.3以下的版本(推荐使用5.2系列版本)·Mysql版本5 ...
- ansible学习之--安装Svn
1.安装svn 机器 Ubuntu SMP Thu Jan 15 20:21:55 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 使用 sudo apt-get in ...
- JVM架构和GC垃圾回收机制详解
JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看:Hadoop内存溢出(OOM)分类.参数调优化) JVM被分为三个主要的子系统 (1)类加载器子系统(2)运行 ...
- Xshell配色方案(Solarized Dark)
将以下内容复制并保存到文件中,文件名以xc为后缀,如:Solarized Dark.xcs [Solarized Dark] text= cyan(bold)=93a1a1 text(bold)= m ...
- Mysql中查看每个IP的连接数
) as ip , count(*) from information_schema.processlist group by ip;
- 如何修改vs2005/vs2010的tfs的登录名和密码 .
如何修改vs2005/vs2010的tfs的登录名和密码 . 连接TFS时,如果本机保存了用户的网络密码,不会出现用户名和密码的输入框,若要更换TFS的用户名和密码,需按以下步骤操作: 控制面板--- ...
- SQL.Cookbook 读书笔记2 查询结果排序
第二章 查询结果排序 2.1 按查询字段排序 order by sal asc; desc;-- 3表示sal 2.2 按子串查询 );--按job的最后两个字符排序 2.3 对字符数字混合排序 cr ...