c++漢字按拼音排序
阿新 • • 發佈:2019-01-24
dwFlags:一組位標記用以指出是否未轉換成預作或寬字元(若組合形式存在),是否使用象形文字替代控制字元,以及如何處理無效字元。你可以指定下面是標記常量的組合,含義如下:
MB_PRECOMPOSED:通常使用預作字元——就是說,由一個基本字元和一個非空字元組成的字元只有一個單一的字元值。這是預設的轉換選擇。不能與
MB_COMPOSITE值一起使用。
MB_COMPOSITE:通常使用組合字元——就是說,由一個基本字元和一個非空字元組成的字元分別有不同的字元值。這是預設的轉換選擇。不能與MB_PRECOMPOSED值一起使用。
MB_ERR_INVALID_CHARS:如果函式遇到無效的輸入字元,它將執行失敗,且GetLastErro返回ERROR_NO_UNICODE_TRANSLATION值。
MB_USEGLYPHCHARS:使用象形文字替代控制字元。
組合字元由一個基礎字元和一個非空字元構成,每一個都有不同的字元值。每個預作字元都有單一的字元值給基礎/非空字元的組成。在字元è中,e就是基礎字元,而重音符標記就是非空字元。
函式的預設動作是轉換成預作的形式。如果預作的形式不存在,函式將嘗試轉換成組合形式。
標記MB_PRECOMPOSED和MB_COMPOSITE是互斥的,而標記MB_USEGLYPHCHARS和MB_ERR_INVALID_CHARS則不管其它標記如何都可以設定。
lpWideCharStr:指向將被轉換的unicode字串。 cchWideChar轉換成功,返回轉換的位元組數(不包括非0字元),不成功返回(size_t)(-1)。
注意:在呼叫前,要指明多字元的內碼表 #include <locale>之後 在wcstombs呼叫前加上setlocale(LC_ALL, ".936");即可 好像其他的方法來轉換,如CString的相關方法,我試了一下好像出現亂碼,還有就是ATL巨集轉換(沒試過)。 以上三種方式應該能大致實現功能了。