如果我理解得很好,可以同时使用 string 和 wstring 来存储 UTF-8 文本。
对于 char,ASCII 字符占一个字节,一些汉字占 3 或 4,等等。这意味着
str[3]
不一定指向第 4 个字符。同样的事情,但每个字符使用
wchar_t
的最小字节数始终为 2 (而不是 1char
),并且 3 或 4 字节宽的字符将占用 2wchar_t
。
正确的 ?
那么,如果我想使用string::find_first_of()
orstring::compare()
等处理这种奇怪的编码字符串怎么办?它会起作用吗?字符串类是否处理字符具有可变大小的事实?或者我应该只将它们用作无特征的虚拟字节数组,在这种情况下,我宁愿使用wchar_t[]
缓冲区。
如果std::string
不处理,第二个问题:是否有库提供可以处理 UTF-8 编码的字符串类,以便str[3]
实际指向第三个字符(这将是长度为 1 到 4 的字节数组)?