QString::fromStdString(content)
更好,因为它更健壮。另请注意,如果 std::string
以 UTF-8 编码,那么它应该给出与 QString::fromUtf8(content.data(), int(content.size()))
完全相同的结果。
有一个名为 fromUtf8
的 QString
函数采用 const char*
:
QString str = QString::fromUtf8(content.c_str());
QString::fromUtf8( content.data(), content.size() )
std::string
以 UTF8 编码(实际上未指定编码),因此这个答案并不完全正确。至少您应该通过断言检查编码。
由于Qt5 fromStdString 内部使用fromUtf8,所以你可以同时使用:
inline QString QString::fromStdString(const std::string& s)
{
return fromUtf8(s.data(), int(s.size()));
}
通常,进行转换的最佳方法是使用方法 fromUtf8,但问题是当您的字符串依赖于语言环境时。
在这些情况下,最好使用 fromLocal8Bit。例子:
std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
不定期副业成功案例分享
std::string
以 UTF8 编码(实际上编码是未指定的),因此QString::fromUtf8(content.data(), int(content.size()))
可能会给出与QString::fromStdString(content)
不同(而且也不正确)的结果。