0

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

4

2 回答 2

0

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

并且如果您使用的是符合 C++11 的东西,则可以保证终止 0 (如果您使用or
无关紧要。并且 data 是原始数据,所以...)。 请参阅http://en.cppreference.com/w/cpp/string/basic_string/data 或标准(21.4.7.1/1 等)。 => 字符串的处理将在 0 处停止data()c_str()


于 2014-06-09T08:12:46.480 回答
0

Re2 的接口似乎使用std::string,这几乎可以肯定意味着它使用字符串的开头和结尾,并且空字符与其他字符一样。(毕竟,它们是在 Unicode 和 UTF-8 中定义的。)当然,'\0' 在类别控制字符中,所以它不会匹配像 "\pL" 之类的东西(它匹配一个字母)。但它应该匹配“\pC”。当然,'\u0000'还有其他空字符的表示。

于 2014-06-09T08:32:27.053 回答