Convert std::string to QString
98,325
Solution 1
There's a QString
function called fromUtf8
that takes a const char*
:
QString str = QString::fromUtf8(content.c_str());
Solution 2
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()))
.
Solution 3
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()));
}
Solution 4
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());
Related videos on Youtube

Author by
Fred Foo
Updated on January 15, 2020Comments
-
Fred Foo almost 3 years
I've got an
std::string content
that I know contains UTF-8 data. I want to convert it to aQString
. How do I do that, avoiding the from-ASCII conversion in Qt? -
Marc Mutz - mmutz over 11 yearsMore efficient:
QString::fromUtf8( content.data(), content.size() )
-
Rémi Benoit almost 7 yearsOnly in Qt5. In Qt4 it uses QString::fromAscii.
-
plasmacel over 4 yearsIn the C++ standard there is no guarantee, that
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. -
plasmacel over 4 yearsThis should be the accepted answer. However your last statement is not necessarily true. In the C++ standard there is no guarantee, that
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)
.