Re2是否使用字符串大小或空终止?

时间:2014-06-09 07:27:27

标签: c++ regex re2

标题就是这样。如果具有UTF-8字符的标准C ++字符串没有零字节,扫描是否在由其大小定义的字符串末尾终止?相反,如果字符串有一个零字节,扫描会在该字节处停止,还是继续到字符串的全长? 我查看了Re2.h文件,它似乎没有解决这个问题。

2 个答案:

答案 0 :(得分:0)

包含UTF-8字符的std::string不能将0字节作为文本的一部分 (仅作为终止),因为UTF-8在任何地方都不允许0。

鉴于您使用符合C ++ 11标准的内容,保证终止0 (如果您使用data()c_str()无关紧要。数据是原始数据,因此......)。
http://en.cppreference.com/w/cpp/string/basic_string/data
或标准(21.4.7.1/1等) =>字符串的处理将停止在0

答案 1 :(得分:0)

Re2的界面似乎使用std::string,差不多 当然意味着它使用的开始和结束 string,并且null字符是与其他字符一样的字符。 (毕竟,它们是以Unicode和UTF-8定义的。) 当然,'\ 0'在类别控制字符中,所以它不会 匹配“\ pL”(匹配一个字母)之类的东西。但它 应匹配“\ pC”。当然还有'\u0000'和空字符的其他表示。