經過查找漢字拼音庫實現實時漢字轉拼音的功能。
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