gpt4 book ai didi

c++ - 处理 UTF-8 字符串

转载 作者:IT王子 更新时间:2023-10-29 01:10:02 27 4
gpt4 key购买 nike

据我所知,linux 使用 UTF-8 编码。这意味着我可以使用 std::string 来处理字符串吗?只是编码将是 UTF-8。

现在在 UTF-8 上我们知道有些字符是 1 个字节,有些是 2,3.. 字节。我的问题是:如何使用 C++ 在 Linux 上处理 UTF-8 编码的字符串?

特别是:您如何获得以字节(或字符数)为单位的字符串长度?你将如何遍历字符串?等

我问的原因是,正如我所说的 UTF-8 字符可能超过一个字节,对吗?显然 myString[7]myString[8] - 可能不是指两个不同的字符。另外,UTF-8 字符串是 10 个字节,这并没有说明它的字符数,对吧?

最佳答案

您不能使用 std::string 处理 UTF-8。 string,尽管它的名字,只是一个(多)字节的容器。它不是一种用于文本存储的类型(字节缓冲区显然可以存储任何对象,包括文本)。它甚至不存储字符(char 是一个字节,而不是一个字符)。

如果您想真正处理(而不只是存储)Unicode 字符,则需要在标准库之外冒险。传统上,这是由 ICU 等库完成的。 .

然而,虽然这是一个成熟的库,但它的 C++ 接口(interface)很糟糕。 Ogonek 采用现代方法.它没有那么完善,仍在进行中,但提供了一个好得多更好的界面。

关于c++ - 处理 UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com