C++ 如何在C/C++;?
我正在寻找一种在Windows(C/C++,而不是.NET)下对两个Unicode字符(char32)进行不敏感比较的方法 我知道解决方案应该具有区域设置意识C++ 如何在C/C++;?,c++,windows,unicode,C++,Windows,Unicode,我正在寻找一种在Windows(C/C++,而不是.NET)下对两个Unicode字符(char32)进行不敏感比较的方法 我知道解决方案应该具有区域设置意识 我想要一个不需要额外的第三方库的解决方案。我的第一个想法是,您应该使用它的参数LOCALE\u INVARIANT和NORM\u IGNORECASE进行查找,您想要比较char32s。忽略我的帖子。 我的原始答案 为子孙后代: 你可以用 _wcsicmp(const wchar_t *string1, const wchar_t *st
我想要一个不需要额外的第三方库的解决方案。我的第一个想法是,您应该使用它的参数
LOCALE\u INVARIANT
和NORM\u 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位(UTF16-LE)。wchar_t是UCS-2用于所有实际用途。widestring函数不将widestring视为可变字符长度;这就是拥有它们的全部意义。