1

我有一个程序可以对in 中的char类型进行各种操作std::string,例如

if (my_string.front() == my_char) {
    // do stuff with my_string
}

我正在寻找一些关于如何使我的程序支持 Unicode 的实用建议。我需要将字符与字符进行比较的能力,这意味着需要 4 个字节的字符,这样即使是最大的 Unicode 字符也可以无损失地处理。

我在 Windows 上使用 GCC 编译器,在这种情况下读取它std::wstring是 2 个字节。C++11 有std::u32string4 个字节,但标准库似乎很大程度上不支持它。

在这种情况下,最简单的解决方案是什么?

4

2 回答 2

2

即使你有一个 uint32 字符串,你也不能只一个一个地比较这些整数。您必须先对字符串进行标准化。由于规范化并不简单,您最终将使用像 ICU 这样的库。所以你可以直接尝试直接使用它:)

http://site.icu-project.org/

于 2013-10-04T13:14:09.223 回答
1

Windows 使用 UTF-16 编码: http ://en.wikipedia.org/wiki/UTF-16

您不需要“四字节字符”来支持所有 unicode 符号。UTF-16 是一种可变长度编码。

很好的阅读材料: http ://www.joelonsoftware.com/articles/Unicode.html

于 2013-10-04T13:10:17.767 回答