【Boost】boost::string_algo详解2——find相关函数
函数声明:
// find_first:【1】查找字符串在输入中第一次出现的位置。// find_last: 【2】查找字符串在输入中最后一次出现的位置。// find_nth: 【3】查找字符串在输入中的第n次(从0开始计数)出现的位置。// find_head: 【4】取一个字符串开头N个字符的字串,相当于substr(0,n);// find_tail: 【5】取一个字符串末尾N个字符的字串。void test_string_find_string(){std::string str1("a1234_first_nth_first_nth_");boost::iterator_range<std::string::iterator> ir;// find_first与ifind_first(不区分大小写,其它同find_first)ir = boost::find_first(str1, "first");// 1. 通过iterator_range构建字符串assert(std::string(ir.begin(), ir.end()) == "first");// 2. 查看搜索到的字符串所在位置assert(ir.begin() - str1.begin() == 6 && ir.end() - str1.begin() == 6 + 5);// 3. 利用iterator_range处理搜索到的字符串boost::to_upper(ir);assert(str1 == "a1234_FIRST_nth_first_nth_");boost::to_lower(ir);assert(str1 == "a1234_first_nth_first_nth_");// find没有找到的情况ir = boost::find_first(str1, "no");assert(ir.empty()); // 不存在assert(std::string(ir.begin(), ir.end()).empty()); // 不存在,仍可构建一个stringstd::ostringstream osstr;osstr << boost::find_first(str1, "_first_");assert(osstr.str() == "_first_");}