排序前
花了两天时间,把苹果试玩的60多个平台都处理了一下,能够上线跑起来。
不过在调试的时候,发现平台多了后,要找相应的平台还有点麻烦,最好是能按拼音排个序。
排序后
上网搜一下,成熟方案很多,就不再写了。直接参考并实现。
C++里中文转拼音那点事
C/C++ 汉字转拼音
这下好用一些。
稍微优化改动一下,关键实现代码:
for (int j = 0; j < srcChnString.Length();) {
char ch = srcChnString.c_str()[j];
if (IS_IN_RANGE(ch, 0x0, 0x7F)) {
result += srcChnString.c_str()[j++];
continue;
}
int chnChar = (ch << 8) + srcChnString.c_str()[j + 1] + 256;
if (IS_IN_RANGE(chnChar, 0x1, 0x9F))
result += srcChnString.c_str()[j++];
else {
for (int i = codeLength - 1; i >= 0; --i) {
if (codeValues[i] <= chnChar) {
result += THelper::FormatString(L" %S", spell_dict[i]);
break;
}
}
j += 2;
}
}