C++ 如何在C/C++;?

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

我正在寻找一种在Windows(C/C++,而不是.NET)下对两个Unicode字符(char32)进行不敏感比较的方法

我知道解决方案应该具有区域设置意识


我想要一个不需要额外的第三方库的解决方案。

我的第一个想法是,您应该使用它的参数
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视为可变字符长度;这就是拥有它们的全部意义。