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_");;
  • 相关阅读:
    input不可编辑
    span width无效
    react配置rem解决移动端适配问题
    iframe 根据内容自适应高度-终极解决方案
    页面导入样式时,使用link和@import有什么区别?
    怎么让Chrome支持小于12px 的文字?
    React Hook 父子组件相互调用方法
    CSS3实现毛玻璃效果
    React阻止组件渲染
    JSX 中内联条件渲染的方法
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1934805.html
Copyright © 2011-2022 走看看