源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C++之BOOST字符串查找示例

  • 时间:2021-11-02 04:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C++之BOOST字符串查找示例
本文实例讲述了C++中BOOST字符串查找的方法,分享给大家供大家参考。具体方法如下: BOOST  字符串查找示例
[u]复制代码[/u] 代码如下:
#include <string>  #include <iostream>  #include <algorithm>  #include <functional>  #include <boost/algorithm/string/case_conv.hpp>  #include <boost/algorithm/string/find.hpp>    using namespace std;  using namespace boost;    int main()  {        cout << "* Find Example *" << endl << endl;        string str1("abc___cde___efg");      string str2("abc");        // find "cde" substring      iterator_range<string::iterator> range=find_first( str1, string("cde") );        // convert a substring to upper case       // note that iterator range can be directly passed to the algorithm      to_upper( range );        cout << "str1 with upper-cased part matching cde: " << str1 << endl;        // get a head of the string      iterator_range<string::iterator> head=find_head( str1, 3 );      cout << "head(3) of the str1: " << string( head.begin(), head.end() ) << endl;        // get the tail      head=find_tail( str2, 5 );      cout << "tail(5) of the str2: " << string( head.begin(), head.end() ) << endl;        // char processing      char text[]="hello dolly!";      iterator_range<char*> crange=find_last(text,"ll");        // transform the range ( add 1 )      transform( crange.begin(), crange.end(), crange.begin(), bind2nd( plus<char>(), 1 ) );      // uppercase the range      to_upper( crange );        cout << text << endl;        cout << endl;        return 0;  }
boost 判定函数的使用
[u]复制代码[/u] 代码如下:
#include <string>  #include <iostream>  #include <functional>  #include <boost/algorithm/string/predicate.hpp>  #include <boost/algorithm/string/classification.hpp>  #include <boost/bind.hpp>  using namespace std;  using namespace boost;  int main()  {      cout << "* Predicate Example *" << endl << endl;        string str1("123xxx321");      string str2("abc");        // Check if str1 starts with '123'      cout << "str1 starts with \"123\": " <<           (starts_with( str1, string("123") )?"true":"false") << endl;             // Check if str1 ends with '123'      cout << "str1 ends with \"123\": " <<           (ends_with( str1, string("123") )?"true":"false") << endl;         // Check if str1 containes 'xxx'      cout << "str1 contains \"xxx\": " <<           (contains( str1, string("xxx") )?"true":"false") << endl;         // Check if str2 equals to 'abc'      cout << "str2 equals \"abc\": " <<           (equals( str2, string("abc") )?"true":"false") << endl;         // Classification functors and all predicate      if ( all(";.,", is_punct() ) )      {          cout << "\";.,\" are all punctuation characters" << endl;        }        // Classification predicates can be combined       if ( all("abcxxx", is_any_of("xabc") && !is_space() ) )      {          cout << "true" << endl;      }        cout << endl;        return 0;  }
boost替换示例
[u]复制代码[/u] 代码如下:
#include <string>  #include <iostream>  #include <iterator>  //#include <boost/algorithm/string/replace.hpp>  //#include <boost/algorithm/string/erase.hpp>  //#include <boost/algorithm/string/case_conv.hpp>  #include <boost/algorithm/string.hpp>    //Following two includes contain second-layer function.  //They are already included by first-layer header    //#include <boost/algorithm/string/replace2.hpp>  //#include <boost/algorithm/string/find2.hpp>    using namespace std;  using namespace boost;    // uppercase formatter  /*      Convert an input to upper case.       Note, that this formatter can be used only on std::string inputs.  */  inline string upcase_formatter(       const iterator_range<string::const_iterator>& Replace )  {      string Temp(Replace.begin(), Replace.end());      to_upper(Temp);      return Temp;  }    int main()  {        cout << "* Replace Example *" << endl << endl;        string str1("abc___cde___efg");        // Erase 6-9th characters from the string      cout << "str1 without 6th to 9th character:" <<          erase_range_copy( str1, make_iterator_range(str1.begin()+6, str1.begin()+9) ) << endl;        // Replace 6-9th character with '+++'      cout << "str1 with 6th to 9th character replaced with '+++': " <<           replace_range_copy(               str1, make_iterator_range(str1.begin()+6, str1.begin()+9), "+++" ) << endl;        cout << "str1 with 'cde' replaced with 'XYZ': ";            // Replace first 'cde' with 'XYZ'. Modify the input      replace_first_copy( ostream_iterator<char>(cout), str1, "cde", "XYZ" );      cout << endl;            // Replace all '___'      cout << "str1 with all '___' replaced with '---': " <<           replace_all_copy( str1, "___", "---" ) << endl;        // Erase all '___'      cout << "str1 without all '___': " <<           erase_all_copy( str1, "___" ) << endl;        // replace third and 5th occurrence of _ in str1      // note that nth argument is 0-based      replace_nth( str1, "_", 4, "+" );      replace_nth( str1, "_", 2, "+" );        cout << "str1 with third and 5th occurrence of _ replace: " << str1 << endl;        // Custom formatter examples      string str2("abC-xxxx-AbC-xxxx-abc");        // Find string 'abc' ignoring the case and convert it to upper case      cout << "Upcase all 'abc'(s) in the str2: " <<          find_format_all_copy(               str2,              first_finder("abc", is_iequal()),               upcase_formatter );            cout << endl;        return 0;  }
希望本文所述对大家的C++程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部