经过查找汉字拼音库实现实时汉字转拼音的功能。
pinyin.txt
(4万+汉字拼音对照)到QMap容器。pinyin.txt
内容:(https://github.com/mozillazg/... líng,yuán,xīng 〇 qiū 㐀 tiàn 㐁 kuà 㐄 wǔ 㐅 yǐn 㐆 yí 㐌 xié 㐖 chóu 㐜 nuò 㐡 dān,qiú 㐤 xù 㐨 xíng 㐩 xiōng 㐫 liú 㐬 lǐn 㐭
class Hanzi2Pinyin { public: static QString find(const QString &hanzi) { static QMap<QString, QStringList> map = loadHanziTable(":/pinyin.txt"); QString output; QStringList stringList = hanzi.split(""); /* 遍历查找汉字-拼音对照表的内容并将汉字替换为拼音 */ for (const QString &str : stringList) { if (map.contains(str)) output += map[str].first(); else output += str; } return output; } private: /* 加载汉字对照表 */ static QMap<QString, QStringList> loadHanziTable(const QString &fileName) { QMap<QString, QStringList> map; QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { qDebug("File: '%s' open failed!", file.fileName().toStdString().c_str()); return map; } /* 读取汉字对照表文件并转换为QMap存储 */ while(!file.atEnd()) { QString content = QString::fromUtf8(file.readLine()); map[content.split(" ").last().trimmed()] = content.split(" ").first().split(","); } file.close(); return map; } };
欢迎你们一块儿协做完善。
https://github.com/aeagean/Ha...git