QString::fromStdString(content)
is better since it is more robust. Also note, that if std::string
is encoded in UTF-8, then it should give exactly the same result as QString::fromUtf8(content.data(), int(content.size()))
.
There's a QString
function called fromUtf8
that takes a const char*
:
QString str = QString::fromUtf8(content.c_str());
QString::fromUtf8( content.data(), content.size() )
std::string
is encoded in UTF8 (actually the encoding is unspecified), so this answer is not entirely correct. At least you should check the encoding by an assertion.
Since Qt5 fromStdString internally uses fromUtf8, so you can use both:
inline QString QString::fromStdString(const std::string& s)
{
return fromUtf8(s.data(), int(s.size()));
}
Usually, the best way of doing the conversion is using the method fromUtf8, but the problem is when you have strings locale-dependent.
In these cases, it's preferable to use fromLocal8Bit. Example:
std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
Success story sharing
std::string
is encoded in UTF8 (actually the encoding is unspecified), soQString::fromUtf8(content.data(), int(content.size()))
may give different (and also incorrect) results thanQString::fromStdString(content)
.