Windows中的4字节字符串?

时间:2013-10-04 13:05:52

标签: c++ unicode

我有一个程序可以对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::u32string有4个字节,但标准库似乎很不支持。

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

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