此文主要介绍采用UTF-8编码格式编程,对字符串进行排序。
GBK编码字符和汉语拼音顺序是一致的,可以利用将字符串编码转为GBK编码格式的方式来进行排序!
首先,我们应该了解一下GBK编码的相关知识。
GBK编码所有字符包括在a1~a9中a1~fe的部分及a8,a9中40~a0的部分,包括标点符号、数学符号、数字序号、全角数字字母、日文平假名、片假名、希腊字母、俄文字母、图形符号、制表符、拼音、注音符号等。
一下部分汉字:
详细参考链接:点击打开链接
由上可知,GBK编码字符和汉语拼音顺序是一致的,因此,可以利用将字符串编码转为GBK编码格式的方式来进行排序。
附上转码代码:
std::string UTF8ToGBK(const std::string& strUTF8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);
unsigned short * wszGBK = new unsigned short[len + 1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(strUTF8.c_str()), -1, wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK = new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGBK, len, NULL, NULL);
std::string strTemp(szGBK);
delete[]szGBK;
delete[]wszGBK;
return strTemp;
}