QString與std::wstring的轉換問題


問題描述:

   在qt工程中調用QString::fromStdWString()時,老是報錯error LNK2019: 無法解析的外部符號...QString::fromStdWString(...)...

原因:

   在Qt庫中 wchar_t 不是內置類型,所以QT建議我們構建基於Qt的軟件時,也不要將 wchar_t 作為內置類型。但是在一些情況下,其他的庫構建時可能已經將 wchar_t 作為了內置類型。當使用 std::wstring、QString::toStdWString()和 QString::fromStdWString() 將導致鏈接錯誤.

解決方案:

std::wstring qToStdWString(const QString &str) { #ifdef _MSC_VER return std::wstring((const wchar_t *)str.utf16()); #else return str.toStdWString(); #endif }   /*! Convert an std::wstring to a QString */ QString stdWToQString(const std::wstring &str) { #ifdef _MSC_VER return QString::fromUtf16((const ushort *)str.c_str()); #else return QString::fromStdWString(str); #endif }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM