1.boost::algorithm::earse_all_copy( )用来删除所有字符串中所有匹配字符
//boost::algorithm::earse_all_copy( )
int main()
{
std::string str= " I am a Coder ! ";
std::cout<"a")<<std::endl;
}
2.boost::algorithm::erase_first_copy( )删除第一个
//boost::algorithm::erase_first_copy()
int main()
{
std::string str= " I am a Coder ! ";
std::cout<"a")<<std::endl;
}
3.boost::algorithm::erase_head_copy,boost::algorithm::erase_tail_copy
删除头部或者尾部几个字符
int main()
{
std::string str= " I am a Coder ! ";
std::cout<::algorithm::erase_head_copy(str,2)<<std::endl;
std::cout<::algorithm::erase_tail_copy(str,2)<<std::endl;
}
4.boost::algorithm::to_upper_copy(),boost::algorithm::to_lower_copy()
字符串大小写转换
int main()
{
std::string str= " I am a Coder ! ";
std::cout<::algorithm::to_upper_copy(str)<<std::endl;
std::cout<::algorithm::to_lower_copy(str)<<std::endl;
}
5.boost::algorithm::join(),将字符串容器中按照第二参数的形式进行拼接
int main()
{
std::vector<std::string> v;
v.push_back("Today ,");
v.push_back("a good day !");
std::cout<" ")<<std::endl;
}
6.boost::algorithm::trim_left_copy,boost::algorithm::trim_right_copy,boost::algorithm::trim_left_copy_if,boost::algorithm::trim_right_copy_if
这四个用来去除字符串开头结尾的空格,后两个可以指定取出什么字符
int main()
{
std::string str= " I am a Coder ! ";
std::cout<::algorithm::trim_left_copy(str)<<std::endl;
std::cout<::algorithm::trim_right_copy(str)<<std::endl;
std::cout<::algorithm::trim_left_copy_if(str,boost::algorithm::is_any_of(" "))<<std::endl;
std::cout<::algorithm::trim_right_copy_if(str,boost::algorithm::is_any_of(" "))<<std::endl;
}
7.boost::algorithm::starts_with(),boost::algorithm::ends_with( ),用来判断字符串是否以给定字符串开头或者结尾
int main()
{
std::string str1="I am a player";
std::cout<::algorithm::starts_with(str1,"I")<<std::endl;
std::cout<::algorithm::ends_with(str1,"player")<<std::endl;
}
8.boost::algorithm::split(),用来字符串的分割,C++标准库一直都没有这个,让人有点难受。
int main()
{
std::string str= " I am a Coder ! ";
std::vector<std::string> v;
boost::algorithm::split(v,str,boost::is_any_of(" "),boost::token_compress_off);
for(auto item : v)
std::cout<- std::endl;
return 0;
}
- 这个模块还是很好用的,大大减低了在大字符串中查找某个特定的串的难度。
- boost::regex ,定义正则表达式
- boost::smatch,事实上是持有类型为 boost::sub_match 的元素的容器, 可以通过与类 std::vector 相似的界面访问。
- boost::sub_match 将迭代器保存在对应于正则表达式分组的位置。 因为它继承自类 std::pair ,迭代器引用的子串可以使用 first 和 second 访问
- boost::regex_search,在指定字符串中进行正则匹配,查找匹配项,注意regex_search()找到第一个匹配的就直接返回,所以一般需要循环调用。
- boost::regex_replace(),用来将匹配的位置进行替换。
int main()
{
std::string str = "hello,2018, i am coming !";
//定义正则表达式
boost::regex reg("\\w+");
//定义regex_search()的返回值
boost::smatch result;
std::string::const_iterator beg=str.begin();
std::string::const_iterator end=str.end();
//注意regex_search()找到第一个匹配的就直接返回,所以一般需要循环调用
boost::regex_search(beg,end,result,reg);
//result一个vector,每个元素都有两个迭代器,标记匹配位置的起始位置和结束位置
std::cout<[0]<<std::endl;
//替换
reg="^h";
str =boost::regex_replace(str,reg,"H");
std::cout<::endl;
return 0;
}
#程序执行结果
[skin@bogon Git]$ ./main
hello
Hello,2018, i am coming !
1.这个库可能让你觉得有点像sprintf,但是更像python中的字符串类型自带的format。
int main()
{
boost::format f = boost::format("%1%-%2%-%3%") % 2018 % 8 %8 ;
std::cout<::endl;
//转换成字符串
std::string str = f.str();
std::cout<::endl;
std::cout<::format("|+| %2-%1")%12 %03 <<std::endl;
return 0;
}
#程序执行结果
[skin@bogon Git]$ ./main
2018-8-8
2018-8-8