boost库:字符串处理

使用boost库的字符串处理之前,需要进行区域设置。类:std::locale,每个C++程序自动拥有一个此类的实例,不能直接访问全局区域设置。

全局区域设置可以使用类std::locale中的静态函数global()改变。

#include <locale>
#include <iostream>

int main() {
  std::locale::global(std::locale("German"));
  std::locale loc;
  std::cout << loc.name() << std::endl;
  return 0;
}

静态函数global()接受一个类型为std::locale的对象作为其唯一的参数。

 

正则表达式库 Boost.Regex

boost::regex 用于定义一个正则表达式库

boost::smatch可以保存搜索结果

#include <boost/regex.hpp>
#include <locale>
#include <iostream>

int main() {
  std::locale::global(std::locale("German"));
  std::string s = "Boris Schaling";
  boost::regex expr("\\w+\\s\\w+");
 std::cout << boost::regex_match(s, expr) << std::endl;
return 0;
}

 boost::regex_match()用于字符串与正则表达式的比较,字符串匹配正则表达式时返回true。

下面介绍一下boost string常用的算法接口:

1. case conversiion
to_upper()  将输入字符串转换成大写。
to_upper_copy() 输入字符串不变,返回值为转换成大写的字符串。
to_lower()  将输入字符串转换成小写。
to_lower_copy()  输入字符串不变,返回值为转换成小写的字符串。
2. trimming
trim_left() 将输入字符串左边的空格删除。
trim_left_copy() 输入字符串不变,返回去除左边空格的字符串。
trim_left_if() 将输入字符串左边符合条件的字符去除。trim_left_if("12hello", is_digit()), 输出 hello
trim_left_copy_if() 输入字符串不变,意思同上。

trim_right() 意思同left差不多。删除右边的空格
trim_right_if()
trim_right_copy()
trim_right_copy_if()

trim() 删除首尾两端的空格。
trim_if()
trim_copy()
trim_copy_if()
3. predicates
bool starts_with(input, test) 判断input是否以test为开端。
bool istarts_with(input, test) 判断input是否以test为开端,大小写不敏感。

bool ends_with(input, test) 判断input是否以test结尾。
bool iends_with(input, test) 判断input是否以test结尾, 大小写不敏感。

bool contains(input, test) 判断test是否在input里。
bool icontains(input, test) 判断test是否在input里,大小写不敏感。

bool equals(input, test) 判断input和test是否相等。
bool iequals(input, test) 判断input和test是否相等, 大小写不敏感。

bool lexicographical_compare() 按字典顺序检测input1是否小于input2。
bool ilexicographical_compare() 按字典顺序检测input1是否小于input2, 大小写不敏感。

bool all() 检测输入的每个字符是否符合给定的条件。
4. find algorithms
iterator_range<string::iterator> find_first(input, search) 从input中查找第一次出现search的位置。
iterator_range<string::iterator> ifind_first(input, search) 从input中查找第一次出现search的位置,大小写不敏感。

iterator_range<string::iterator> find_last(input, search) 从input中查找最后一次出现search的位置。
iterator_range<string::iterator> ifind_last(input, search) 从input中查找最后一次出现search的位置,大小写不敏感。

iterator_range<string::iterator> find_nth(input, search, n) 从input中查找第n次(n从0开始)出现search的位置。
iterator_range<string::iterator> ifind_nth(input, search, n) 从input中查找第n次(n从0开始)出现search的位置,大小写不敏感。

iterator_range<string::iterator> find_head(input, n) 获取input开头n个字符的字串。
iterator_range<string::iterator> find_tail(input, n) 获取input尾部n个字符的字串。

iterator_range<string::iterator> find_token() 

 

posted @ 2019-01-23 10:53  c++11  阅读(2759)  评论(0编辑  收藏  举报