boost--字符串模块

boost


  • 01.boost字符串的算法库

1.boost::algorithm::earse_all_copy( )用来删除所有字符串中所有匹配字符


//boost::algorithm::earse_all_copy( )
int main()
{

    std::string str= "  I am a Coder !  ";
    std::cout<<boost::algorithm::erase_all_copy(str,"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<<boost::algorithm::erase_first_copy(str,"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<<boost::algorithm::erase_head_copy(str,2)<<std::endl;
    std::cout<<boost::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<<boost::algorithm::to_upper_copy(str)<<std::endl;
    std::cout<<boost::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<<boost::algorithm::join(v," ")<<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<<boost::algorithm::trim_left_copy(str)<<std::endl;
    std::cout<<boost::algorithm::trim_right_copy(str)<<std::endl;
    std::cout<<boost::algorithm::trim_left_copy_if(str,boost::algorithm::is_any_of(" "))<<std::endl;
    std::cout<<boost::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<<boost::algorithm::starts_with(str1,"I")<<std::endl;
    std::cout<<boost::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<<item<<std::endl;
    return 0;
}
  • 02.正则匹配模块
  1. 这个模块还是很好用的,大大减低了在大字符串中查找某个特定的串的难度。
  2. boost::regex ,定义正则表达式
  3. boost::smatch,事实上是持有类型为 boost::sub_match 的元素的容器, 可以通过与类 std::vector 相似的界面访问。
  4. boost::sub_match 将迭代器保存在对应于正则表达式分组的位置。 因为它继承自类 std::pair ,迭代器引用的子串可以使用 first 和 second 访问
  5. boost::regex_search,在指定字符串中进行正则匹配,查找匹配项,注意regex_search()找到第一个匹配的就直接返回,所以一般需要循环调用。
  6. 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<<result[0]<<std::endl;

    //替换
    reg="^h";
    str =boost::regex_replace(str,reg,"H");
    std::cout<<str<<std::endl;


    return 0;
}

#程序执行结果
[skin@bogon Git]$ ./main 
hello
Hello,2018, i am coming !

  • 03.格式化输出库

1.这个库可能让你觉得有点像sprintf,但是更像python中的字符串类型自带的format。


int main()
{
    boost::format f  = boost::format("%1%-%2%-%3%") % 2018 % 8 %8 ;
    std::cout<<f<<std::endl;
    //转换成字符串
    std::string str = f.str();
    std::cout<<str<<std::endl;

    std::cout<<boost::format("|+| %2-%1")%12 %03 <<std::endl;
    return 0;
}

#程序执行结果
[skin@bogon Git]$ ./main 
2018-8-8
2018-8-8

猜你喜欢

转载自blog.csdn.net/SkinWhite/article/details/81504327