BOOST--字符串处理

BOOST--字符串处理

    • BOOST字符串
    • 区域设置
    • Boost.StringAlgorithms(boost算法库)
        • 大小写转换
        • 删除
          • 去除字符串中的空格或字符串的结束符
        • 查找
        • 连接
        • 替换
    • Boost.Regex(正则表达式库)
    • Boost.Tokenizer(词汇分割器库)
      • boost::escaped_list_separator
      • boost::offset_separator
    • Boost.Format(格式化输出库)

BOOST字符串

区域设置

//这一部分没搞懂,之后用到的时候再补充说明吧

std::locale::global(std::locale(“German”));

Boost.StringAlgorithms(boost算法库)

因为 Boost.StringAlgorithms 类中包括超过20个类别和相同数目的头文件, 为了方便起见,头文件 boost/algorithm/string.hpp 包括了所有其他的头文件。

大小写转换

  • 定义于:boost/algorithm/string/case_conv.hpp
  • boost::algorithm::to_upper(s):小写转大写(字符串本身转)
  • boost::algorithm::to_lower (s):大写转小写(字符串本身转)
  • boost::algorithm::to_upper_copy():小写转大写(返回转换过的字符串作为结果)
  • boost::algorithm::to_lower_copy() :大写转小写(返回转换过的字符串作为结果)

删除

  • boost::algorithm::erase_all_copy(): 从整个字符串中 删除特定的某个字符。
  • boost::algorithm::erase_first_copy():如果只在此字符首次出现时删除,可以使用此函数 。
  • boost::algorithm::erase_head_copy():如果要在字符串头部删除若干字符,可以使用此函数
  • boost::algorithm::erase_tail_copy():如果要在字符串尾部删除若干字符,可以使用此函数。
去除字符串中的空格或字符串的结束符

boost::algorithm::trim_left_copy()
boost::algorithm::trim_right_copy()
boost::algorithm::trim_copy()

查找

boost::algorithm::find_first() boost::algorithm::find_last()
boost::algorithm::find_nth()
boost::algorithm::find_head()
boost::algorithm::find_tail()

所有这些函数的共同点是均返回类型为 boost::iterator_range 类 的一对迭代器。 此类起源于 Boost C++ 的 Boost.Range 库, 它在迭代器的概念上定义了“范围”。 因为操作符 << 由 boost::iterator_range 类重载而来, 单个搜索算法的结果可以直接写入标准输出流。

连接

函数 boost::algorithm::join() 接受一个字符串的容器 作为第一个参数, 根据第二个参数将这些字符串连接起来

替换

boost::algorithm::replace_first_copy()
boost::algorithm::replace_nth_copy()
boost::algorithm::replace_last_copy()
boost::algorithm::replace_all_copy()
boost::algorithm::replace_head_copy()
boost::algorithm::replace_tail_copy()

Boost.Regex(正则表达式库)

//学习一下正则表达式再看这一部分吧。。。

Boost.Tokenizer(词汇分割器库)

  • 定义于boost/tokenize.hpp
  • 定义了模板类:boost::tokenizer
  • 词汇分割器必须由类型为 std::string 的字符串初始化。
  • 通过使用 begin() 和 end() 方法,词汇分割器可以像容器一样访问。通过使用迭代器,可以得到前述字符串的部分表达式。模板参数的类型决定了如何达到部分表达式。

boost::char_separator 类默认将空格和标点符号视为分隔符。 为了识别这些分隔符, boost::char_separator 函数调用了 std::isspace() 函数和 std::ispunct 函数。 ()Boost.Tokenizer 库会区分要隐藏的分隔符和要显示的分隔符。 在默认的情况下,空格会隐藏而标点符号会显示出来。

boost::char_separator 的构造函数可以接受三个参数, 只有第一个是必须的,它描述了需要隐藏的分隔符;第二个参数制定了需要显示的分隔符(即它作为分隔符来使用,但同时也会被显示);第三个参数决定了是否显示空的部分表达式,如果连续找到两个分隔符,他们之间的部分表达式将为空,在默认情况下,这些空表达式是不会显示的,第三个参数可以改变默认的行为。

还有一些其他类可以用于字符串分割:
(作为第二个参数传递给 boost::tokenizer 类的构造函数)

boost::escaped_list_separator

boost::escaped_list_separator 类用于读取由逗号分隔的多个值,这个格式的文件通常称为 CSV (comma separated values,逗号分隔文件),它甚至还可以处理双引号以及转义序列。

boost::offset_separator

boost::offset_separator 指定了部分表达式应当在字符串中的哪个位置结束。

Boost.Format(格式化输出库)

boost::format("%1%.%2%.%3%") % 11% 22 % 33

格式化的结果为:11.22.33
如果要改变顺序,可以修改占位符的顺序

boost::format("%1% %2% %1%") % boost::io::group(std::showpos, 99) % 100

格式化的结果为:+99 100 +99
因为操作器 std::showpos() 通过 boost::io::group() 与数字 99 连接,所以只要显示 99 , 在它前面就会自动加上加号。

boost::format("%|1$+| %2% %1%") % 99 % 100

格式化的结果为:+99 100 99

请注意,虽然一般对数据的引用不是必须的,但是所有占位符一定要同时设置为指定或非指定。

你可能感兴趣的:(BOOST)