zoukankan      html  css  js  c++  java
  • Boost String Algorithms Library 函数详解三 (find)

    Table 11.4. Find algorithms

    Algorithm nameDescriptionFunctions
    find_first Find the first occurrence of a string in the input find_first()
    ifind_first()
    find_last Find the last occurrence of a string in the input find_last()
    ifind_last()
    find_nth Find the nth (zero-indexed) occurrence of a string in the input find_nth()
    ifind_nth()
    find_head Retrieve the head of a string find_head()
    find_tail Retrieve the tail of a string find_tail()
    find_token Find first matching token in the string find_token()
    find_regex Use the regular expression to search the string find_regex()
    find Generic find algorithm find()



    基础示例:

     string str1("a1234_first_nth_first_nth_");
     boost::iterator_range<string::iterator> ir;
     
     // find_first 
     // ifind_first -- 不区分大小写,其它同find_first
     ir = find_first(str1, "first");
     assert(string(ir.begin(), ir.end()) == "first"); // 比较字符串
     assert(ir.begin() - str1.begin() == 6 && ir.end()-str1.begin() == 6 + 5); //查看搜索到的字符串所在位置
     to_upper(ir); // 利用iterator_range处理搜索到的字符串
     assert(str1 == "a1234_FIRST_nth_first_nth_");
     to_lower(ir);
     assert(str1 == "a1234_first_nth_first_nth_");
     ir = find_first(str1, "no");
     assert(ir.empty()); // 不存在
     assert(string(ir.begin(), ir.end()).empty()); // 不存在,仍可构建一个string
     ostringstream osstr;
         osstr << find_first( str1, "_first_" );
         assert( osstr.str()=="_first_" );
     
     // find_last -- 同findfirst,只是方向相反
     // ifind_last -- 不区分大小写,其它同findlast
    
     // find_nth
     ir = find_nth(str1, "nth", 1);
     assert(ir.begin() - str1.begin() == 22);
     ir = find_nth(str1, "nth", 0);
     assert(ir.begin() - str1.begin() == 12);
     // find_head
     // find_tail只是方向相反
     ir = find_head(str1, 5);
     transform(ir.begin(), ir.end(), ir.begin(), bind2nd(plus<char>(), 1));
     assert(str1 == "b2345_first_nth_first_nth_");
     // find_token
     ir = find_token(str1, is_any_of("irfst"));
     assert(string(ir.begin(), ir.end()) == "f");
     ir = find_token(str1, is_any_of("xfirts"), token_compress_off );
     assert(string(ir.begin(), ir.end()) == "f");
     ir = find_token(str1, is_any_of("irfst"), token_compress_on );
     assert(string(ir.begin(), ir.end()) == "first");
     ir = find_token(str1, is_any_of("fitr "), token_compress_on );
     assert(string(ir.begin(), ir.end()) == "fir");
     // find_regex
     boost::regex rx("b[0-9]+_");
     ir = find_regex(str1, rx);
     assert(string(ir.begin(), ir.end()) == "b2345_");
     // find_all_regex test table 11.4 里没有列出,boost_1_33_0\libs\algorithm\string\test 目录下有
     string str2("b1_b22_b333_b4444");
     vector<string> tokens;
         find_all_regex(tokens, str2, rx);
     assert(tokens.size() == 3);
     assert(tokens[0] == "b1_");
     assert(tokens[1] == "b22_");
     assert(tokens[2] == "b333_");
     // find
     ir = find(str1, first_finder(string("b2345_")));
     assert(string(ir.begin(), ir.end()) == "b2345_");;
  • 相关阅读:
    java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener
    ElasticSearch读取查询结果(search)
    Oracle合并某一列
    Django在Eclipse下配置启动端口号
    Apache部署django项目
    Apache的下载安装(主要说的 64位)及问题
    windows7下怎样安装whl文件(python)
    windows下面安装Python和pip终极教程
    Java 多线程 并发编程 (转)
    数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1934805.html
Copyright © 2011-2022 走看看