zoukankan      html  css  js  c++  java
  • Boost String Algorithms Library 函数详解一 (case conversion和trimmming)

    Boost String Algorithms Library 是很有用的一个库,它让C++程序员不用一次又一次的为了字符串的处理制造一些小小的轮子。这里我将逐一用实例详细的说明每一个函数的使用,希望给自己给同道带来方便。

    Boost String Algorithms Library 是很有用的一个库,它让C++程序员不用一次又一次的为了字符串的处理制造一些小小的轮子。《浅尝boost之String algorithms library》里我主要介绍了它的Split ,因为这个功能很出彩,其它则一带而过。不过,当多次向朋友推荐这个库后,反馈得到的信息让我觉得详细列出其每一个函数的使用,作为一个程序员处理字符串时的手册,是件更有意义的事情。这里我将根据http://www.boost.org/doc/html/string_algo/quickref.html列表顺序,逐一用实例详细的说明每一个函数的使用,希望给自己给同道带来方便。

    Table 11.1. Case Conversion

    Algorithm nameDescriptionFunctions
    to_upper Convert a string to upper case to_upper_copy()
    to_upper()
    to_lower Convert a string to lower case to_lower_copy()
    to_lower()



    基础示例:

     1     // _copy
     2      string str1 = "AABBccdd";
     3     assert(to_lower_copy(str1) == "aabbccdd" && str1=="AABBccdd");
     4     assert(to_upper_copy(str1) == "AABBCCDD" && str1=="AABBccdd");
     5     //
     6      string str2 = str1;
     7     to_lower(str2);
     8     assert(str2 == "aabbccdd");
     9     str2 = str1;
    10     to_upper(str2);
    11     assert(str2 == "AABBCCDD");


    注意:带_copy后缀的函数与不带_copy后缀的函数的区别,带_copy的函数不会修改源字符串,而是返回一个转换后的新字符串。

    Table 11.2. Trimming

    Algorithm nameDescriptionFunctions
    trim_left Remove leading spaces from a string trim_left_copy_if()
    trim_left_if()
    trim_left_copy()
    trim_left()
    trim_right Remove trailing spaces from a string trim_right_copy_if()
    trim_right_if()
    trim_right_copy()
    trim_right()
    trim Remove leading and trailing spaces from a string trim_copy_if()
    trim_if()
    trim_copy()
    trim()


    基础示例:

     1     // _copy_if
     2      string str1("     space     ");
     3     assert(trim_left_copy_if(str1, is_space()) == "space     ");
     4     assert(trim_right_copy_if(str1, is_space()) == "     space");
     5     assert(trim_copy_if(str1, is_space()) == "space");
     6     // _copy
     7     assert(trim_left_copy(str1) == "space     ");
     8     assert(trim_right_copy(str1) == "     space");
     9     assert(trim_copy(str1) == "space");
    10     // _if
    11     string str2 = str1;
    12     trim_left_if(str2, is_space());
    13     assert(str2 == "space     ");
    14     str2 = str1;
    15     trim_right_if(str2, is_space());
    16     assert(str2 == "     space");
    17     str2 = str1;
    18     trim_if(str2, is_space());
    19     assert(str2 == "space");
    20     //
    21     str2 = str1;
    22     trim_left(str2);
    23     assert(str2 == "space     ");
    24     str2 = str1;
    25     trim_right(str2);
    26     assert(str2 == "     space");
    27     str2 = str1;
    28     trim(str2);
    29     assert(str2 == "space");


    高级示例:

     1     //is_any_of()  非常重要的用法,可对付大部分的实际应用
     2     string str3("123other");
     3     assert(trim_left_copy_if(str3, is_any_of("321")) == "other");
     4     //std::back_inserter 
     5     string str;
     6     trim_left_copy_if(std::back_inserter(str), str1, is_space());
     7     assert(str == "space     ");
     8     //is_classified()
     9     assert(trim_copy_if(str3, is_classified(std::ctype_base::digit))  == "other");
    10     //应用其它的 is_xxxxx方法
    11     assert(trim_copy_if(str3, is_digit())  == "other");
    12     //通过bind2nd,使用greater, less, less_equal等方法
    13     string str4("acdxxxx");
    14     assert(trim_left_copy_if(str4, bind2nd(less<char>(),'d')) == "dxxxx");
  • 相关阅读:
    [整理]解析Json需要设置Mime
    [整理]IE11中的WebGL探秘:渲染速度超Chrome
    [转载]详解主流浏览器多进程架构:Chrome、IE
    [转载]为什么浏览器会使用多进程架构
    [整理]win7下VS2010遇到内存不足解决方发
    [整理]WebAPI中应用oData
    [转载]NodeJS优缺点及适用场景讨论
    [转载]HTML5 真的会消灭原生App吗?
    [转载]微软VS2015支持Android和iOS编程
    VC++调试基础
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1934771.html
Copyright © 2011-2022 走看看