我正在寻找一种在Windows(C/C++,不是.NET)下对两个Unicode字符(char32)进行不敏感比较的方法。如何在C/C++的Windows下对两个Unicode字符或字符串进行区分大小写比较?
我知道该解决方案应该是区域意识。
我想要一个不需要额外的第三方库的解决方案。
我正在寻找一种在Windows(C/C++,不是.NET)下对两个Unicode字符(char32)进行不敏感比较的方法。如何在C/C++的Windows下对两个Unicode字符或字符串进行区分大小写比较?
我知道该解决方案应该是区域意识。
我想要一个不需要额外的第三方库的解决方案。
我的第一个想法是,你应该查询CompareStringEx
及其参数LOCALE_INVARIANT
和NORM_IGNORECASE
。
哎呀,你想比较char32s。忽略我的帖子。
我原来的答复
为后人:
您可以使用
_wcsicmp(const wchar_t *string1, const wchar_t *string2) or _mbsicmp(const unsigned char_t *string1, const unsigned char *string2)
前者比较宽字符 (通常是UTF-16),后者 比较多字节字符 (通常是UTF-8)。您需要设置使用
_setmbcp(int codepage)
的char32的 代码页是32位(UTF-32),为wchar_t是16位(UTF-16-LE)。 – sorin 2010-03-08 16:23:47
对于所有实际用途,wchar_t都是UCS-2。宽字符串函数不会将宽字符串视为可变字符长度;这是拥有它们的关键。 – 2010-03-08 18:58:00