据我所知linux使用UTF-8编码。
这意味着我可以使用std::string
用于处理字符串吗?
只是编码是 UTF-8。
现在在 UTF-8 上我们知道有些字符是 1 个字节,有些是 2,3.. 字节。
我的问题是:如何使用 C++ 在 Linux 上处理 UTF-8 编码的字符串?
特别是:如何获得字符串的长度(以字节为单位(或字符数))?你将如何遍历字符串? ETC。
我问的原因是,正如我所说,UTF-8 字符可能不止一个字节,对吗?
很明显myString[7]
and myString[8]
- 可能不指两个不同的字符。
另外,UTF-8 字符串有 10 个字节,这并没有说明它的字符数,对吗?
您无法处理 UTF-8std::string
. string
尽管它的名字如此,它只是一个(多)字节的容器。这是not用于文本存储的类型(字节缓冲区显然可以存储任何对象,包括文本)。它甚至不存储字符(char
是一个字节,而不是一个字符)。
如果你想真正做到这一点,你需要在标准库之外冒险handle(而不仅仅是存储)Unicode 字符。传统上,这是由诸如ICU.
然而,虽然这是一个成熟的库,但它的 C++ 接口很糟糕。采用现代方法Ogonek。它尚未完善并且仍在进行中,但提供了much更好的界面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)