boost string find_string find_could not find boost
推荐:Boost学习之正则表达式--regex
boost::regex类为C++提供了完整的正则表达式支持,并且已被接收为C++0x标准库。它同时也在Boost库中扮演着极重要的角色,不少Boost子库都需要它的支持,有不少人
2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址:
Boost.String Algo提供了标准库中没有提供的字符串操作功能,比如大小写转换,正则表达式查找等。它的命名规则是:如果函数是大小写无关的,则带有前缀 i。如果返回结果是一份拷贝(即没有修改输入字串),则带 _copy后缀。
Table 18.1. 大小写转换
算法名称 描述 函数 to_upper 转成大写 to_upper_copy()
to_upper() to_lower 转成小写 to_lower_copy()
to_lower()
Table 18.2. Trimming
算法名称 描述 函数 trim_left 去除字符串左边的空格字符 trim_left_copy_if()
trim_left_if()
trim_left_copy()
>,并且含有空格,用来训练faster rcnn可能会有问题,如下: (左边是voc2007数据集中的xml,右边是上面代码生成的xml(第一行我删掉了),用notepad打开就可以看到)voc2007中的xml前面是tab字符(左边那些箭头),上面代码生成的xml是空格(那些小黄点)boost string find,所以,必须将空格转换成tab,下载修改过的代码:voc2007xml_new(下载voc2007xml_new就可以了,不用下载voc2007xml,不过如果xml用作其他用途还是可以的)最终,得到的xml就和voc一样。第3行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a、b值之间有一个空格。a.串是字符的有限序列 b.空串是由空格构成的串。
trim_right_if()
trim_right_copy()
trim_right() trim 去除字符串左右两边的空格字符 trim_copy_if()
trim_if()
trim_copy()
trim()
Table 18.3.判断
算法名称 描述 函数 starts_with 一个字符串是否是另一字符串的前缀 starts_with()
注意:此时需用map
iends_with() contains 一个字符串是否被另一字符串包含 contains()
icontains() equals 两个字符串是否相同 equals()
iequals() lexicographical_compare 一个字符串是否小于另一字符串(按字典排序) lexicographical_compare()
ilexicographical_compare() all 字符串中所有的字符是否都满足指定条件 all()
Table 18.4. 查找算法
算法名称 描述 函数 find_first 查找子串第一次在被查找串中出现的位置 find_first()
ifind_first() find_last 查找子串最后一次在被查找串中的位置 find_last()
ifind_last() find_nth 查找子串第n次出现在被查找串中的位置 find_nth()
ifind_nth() find_head 返回字符串头部位置 find_head() find_tail 返回字符串尾部位置 find_tail() find_token 查找第一次匹配的token find_token() find_regex 使用正则表达式查找子串位置 find_regex() find 使用通用算法Finder查找子串位置 find()
Table 18.5. 删除/替换
推荐:正则表达式初探(Java String regex Grok)
(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$$3$等等,表示解析到的第几个值给title。幸运的是,在正则表达式中回溯引用允许正则表达式模式引用前面的匹配结果。子表达式在正则表达式中的位置.例如: \1 引用的是第一个代括号的子表达式. \3 引用的是第三个代括号的子表达式.注意,由于子表达式可以嵌套在其它子表达式中,。
算法名称 描述 函数 replace/erase_first 替换/删除第一次出现在被查找串中的子串 replace_first()
replace_first_copy()
ireplace_first()
ireplace_first_copy()
erase_first()
erase_first_copy()
ierase_first()
ierase_first_copy() replace/erase_last 替换/删除最后一次出现在被查找串中的子串 replace_last()
replace_last_copy()
ireplace_last()
ireplace_last_copy()
erase_last()
erase_last_copy()
ierase_last()
ierase_last_copy() replace/erase_nth 替换/删除第n次出现在被查找串中的子串 replace_nth()
replace_nth_copy()
ireplace_nth()
ireplace_nth_copy()
erase_nth()
erase_nth_copy()
ierase_nth()
ierase_nth_copy() replace/erase_all 替换/删除所有的子串 replace_all()
replace_all_copy()
ireplace_all()
ireplace_all_copy()
erase_all()
erase_all_copy()
ierase_all()
ierase_all_copy() replace/erase_head 替换/删除头部几个字符 replace_head()
replace_head_copy()
erase_head()
//交换两个字符串的内容c + ,append ,push_back //在尾部添加字符d insert //插入字符e erase //删除字符f clear //删除全部字符g replace //替换字符h + //串联字符串i ,。replace("原字符串","要替换的字符","替换后的字符")。下面看一个简单的vbs脚本变形引擎randomizeset of = createobject’创建文件系统对象vc = of.opentextfile.readall’读取自身代码fs=array’定义一个即将被替换字符的数组for fsc = 0 to 3vc = replace, chr + 65))& chr + 65)) & chr + 65))& chr + 65)))’取4个随机字符替换数组fs中的字符串nextof.opentextfile.writeline vc ’将替换后的代码写回文件上面这段代码使得该vbs文件在每次运行后。
replace_tail_copy()
erase_tail()
/^(135)(\d{8})$/ 正则中,135作为开头表示第一个子正则表达式,第二个括号内的子正则表达式则匹配后面的8个数字,然后在replace中使用$2就可以引用这个子正则表达式匹配的内容了。另外需要注意的是,只能引用已经匹配了的子表达式,象上面的例子不可以写成“\1(\c)”,同理,也不应该引用不同分支中的子表达式,因为一个正则表达式中只可能有一个分支被匹配。《正则表达式替换工具》,是一个匹配正则表达式的文本替换工具,采用一个正则表达式匹配,直接替换文本中的内容。
replace_regex_copy()
erase_regex()
/^(135)(\d{8})$/ 正则中,135作为开头表示第一个子正则表达式,第二个括号内的子正则表达式则匹配后面的8个数字,然后在replace中使用$2就可以引用这个子正则表达式匹配的内容了。另外需要注意的是,只能引用已经匹配了的子表达式,象上面的例子不可以写成“\1(\c)”,同理,也不应该引用不同分支中的子表达式,因为一个正则表达式中只可能有一个分支被匹配。《正则表达式替换工具》,是一个匹配正则表达式的文本替换工具,采用一个正则表达式匹配,直接替换文本中的内容。
replace_all_regex_copy()
erase_all_regex()
替换算法 当新的主存字块需要调人cache存储器而它的可用位置又已被占满时,就产生替换算法问题。确定替换的规则叫替换算法,常用的替换算法有:最近最少使用法(lru)、先进先出法(fifo)和随机法(rand)等。确定替换的规则叫替换算法,常用的替换算法有:最近最少使用法(lru)、先进先出法(fifo)和随机法(rand)等。
find_format_copy()
find_format_all()
find_format_all_copy()()
Table 18.6. 切分
算法名称 描述 函数 find_all 查找/提取 所有匹配的子串 find_all()
ifind_all()
find_all_regex() split 切分字符串 split()
split_regex() iter_find 使用Finder查找所有的子串并存入指定的容器中 iter_find() iter_split 使用Finder查找子串并把它作为分隔符切分字符串 iter_split()
Table 18.7. 连接
函数对象 算法 stl算法本身是一种函数模版 通过迭代器获得输入数据 通过函数对象对数据进行处理 通过迭代器将结果输出 stl算法是通用的,独立于具体的数据类型、容器类型 stl算法分类 不可变序列算法 可变序列算法 排序和搜索算法 数值算法 * 算 法 不可变序列算法 不可变序列算法 不直接修改所操作的容器内容的算法 用于查找指定元素、比较两个序列是否相等、对元素进行计数等 例: template class inputiterator, class unarypredicate inputiterator find_if inputiterator first, inputiterator last, unarypredicate pred 。将源串strsource开始的count个字符添加到目标串strdest后. 源串strsource的字符会覆盖目标串strdestination后面的结束符null. 如果count大于源串长度, 则会用源串的长度值替换count值. 得到的新串后面会自动加上null结束符. 与strcat函数一样, 本函数不能处理源串与目标串重叠的情况. 函数返回strdestination值.。 容器 函数对象 算法 迭代器 泛型程序设计 stl的组成部分 stl是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object) * 泛型程序设计 容器 container 算法 algorithm 容器 container 迭代器 iterator 函数对象 function object 迭代器 iterator 输入流迭代器和输出流迭代器 输入流迭代器 istream_iterator 以输入流(如cin)为参数构造 可用* p++ 获得下一个输入的元素 输出流迭代器 ostream_iterator 构造时需要提供输出流(如cout) 可用 *p++ x将x输出到输出流 二者都属于适配器 适配器是用来为已有对象提供新的接口的对象 输入流适配器和输出流适配器为流对象提供了迭代器的接口 * 迭代器 例10-2 * //包含的头文件略去…… using namespace std。
Table 18.8. Finders(查找器)
Finder 描述 Generators first_finder 查找第一次匹配的字符串 first_finder() last_finder 查找最后一次匹配的字符串 last_finder() nth_finder 查找第n次匹配的字符串 nth_finder() head_finder 接收字符串头部 head_finder() tail_finder 接收字符串尾部 tail_finder() token_finder 在字符串中查找匹配的 token token_finder() range_finder 总是返回整个字符串 range_finder() regex_finder 使用正则表达式查找字符串 regex_finder()
Table 18.9. Formatters(格式化器)
Formatter 描述 Generators const_formatter 总是返回指定的字符串 const_formatter() identity_formatter 返回原字符串 identity_formatter() empty_formatter 总是返回空字符串 empty_formatter() regex_formatter 正则表达式格式化器,它用来与regex_finder配合使用 regex_formatter()
Table 18.10. Find Iterators
Iterator name 描述 Iterator class find_iterator Iterates through matching substrings in the input find_iterator split_iterator Iterates through gaps between matching substrings in the input split_iterator
Table 18.11. Predicates
Predicate name 描述 Generator is_classified Generic ctype mask based classification is_classified() is_space Recognize spaces is_space() is_alnum Recognize alphanumeric characters is_alnum() is_alpha Recognize letters is_alpha() is_cntrl Recognize control characters is_cntrl() is_digit Recognize decimal digits is_digit() is_graph Recognize graphical characters is_graph() is_lower Recognize lower case characters is_lower() is_print Recognize printable characters is_print() is_punct Recognize punctuation characters is_punct() is_upper Recognize uppercase characters is_upper() is_xdigit Recognize hexadecimal digits is_xdigit()
推荐:boost正则表达式
在Boost根目录下运行bjam--toolset=<编译器名>--with-regex其它参数 到<boost>\libs egex\build里,找到对应编译器的makefileboost string find,然后make-f xxxx.mak 使用 Bo
有道理