项目需要,简体中文转换成繁体中文;
void MyTemporayIdea::Simplified2Traditional()
{
const std::wstring& strSrc = L"中文繁体:中华人民共和国";
std::wstring strDest(strSrc.length() + 1, 0);
LCMapStringW(0x0804, LCMAP_TRADITIONAL_CHINESE,
strSrc.data(), strSrc.length(),
(LPWSTR)strDest.data(), strDest.length());
QMessageBox::information(this, "", QString::fromStdWString(strDest));
}
以下来自:https://zhuanlan.zhihu.com/p/596979492
繁体中文转简体中文UNICODE版本
wstring Traditional::ToSimple(const wstring & _str)
{
LPCWSTR lpSrcStr = _str.c_str();
int cchSrc = static_cast<int>(_str.size());
int cchDest = static_cast<int>(1+_str.size());
LPWSTR lpDestStr = new WCHAR[cchDest]{0};
LCMapStringW(0x0804,LCMAP_SIMPLIFIED_CHINESE,lpSrcStr,cchSrc,lpDestStr,cchDest);
wstring str(lpDestStr);
delete[] lpDestStr;
lpDestStr = nullptr;
return str;
}
简体中文转繁体中文UNICODE版本
wstring Traditional::FromSimple(const wstring & _str)
{
LPCWSTR lpSrcStr = _str.c_str();
int cchSrc = static_cast<int>(_str.size());
int cchDest = static_cast<int>(1+_str.size());
LPWSTR lpDestStr = new WCHAR[cchDest]{0};
LCMapStringW(0x0804,LCMAP_TRADITIONAL_CHINESE,lpSrcStr,cchSrc,lpDestStr,cchDest);
wstring str(lpDestStr);
delete[] lpDestStr;
lpDestStr = nullptr;
return str;
}