如果 Qt 使用与您的项目完全相同的 STL 头文件进行编译,那么使用它是一个好主意(!!!QString::fromStdWString
)。如果没有 - 你可以得到很多乐趣,抓住一个错误。
如果您不确定两个 STL 标头是否相同,请使用QString::fromWCharArray
:
std::wstring wideString;
QString qtString = QString::fromWCharArray( wideString.c_str() );
更新:回复@juzzlin:
让我们想象一下 Qt 是使用包含以下内容的 STL 构建的std::wstring
:
class wstring { // I know, that there's no such class, but I'm shure you'll understand what I want to say
wchar_t * m_ptr;
size_t m_length;
...
};
并且您拥有包含以下内容的 STL std::wstring
:
class wstring {
wchar_t * m_ptr;
wchar_t * m_the_end;
...
};
如果您将std::wstring
Qt 交给 Qt,它会将m_the_end
指针解释为字符串的长度,并且
你可以得到很多乐趣,抓住一个错误