代码之家  ›  专栏  ›  技术社区  ›  bogdan

如何比较C/C++中Windows下两个Unicode字符或字符串之间的不区分大小写?

  •  3
  • bogdan  · 技术社区  · 15 年前

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

    我知道这个解决方案应该是区域性的。

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

    2 回复  |  直到 15 年前
        1
  •  2
  •   Johann Gerell    15 年前

    我的第一个想法是你应该查找 CompareStringEx 及其参数 LOCALE_INVARIANT NORM_IGNORECASE .

        2
  •  0
  •   Niki Yoshiuchi    15 年前

    哎呀,你想比较一下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)