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