我有一个程序可以对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个字节,但标准库似乎很不支持。
在这种情况下,最简单的解决方案是什么?
答案 0 :(得分:2)
即使你有一个uint32字符串,你也不能一个一个地比较这些整数。您必须先将字符串规范化。由于规范化并不简单,您最终将使用像ICU这样的库。所以你可以直接尝试直接使用它:)
答案 1 :(得分:1)
Windows使用UTF-16编码: http://en.wikipedia.org/wiki/UTF-16
您不需要“四字节字符”来支持所有unicode符号。 UTF-16是一种可变长度编码。