我正在尋找一種在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