我知道std::string content
包含UTF-8数据。我想将其转换为QString
。我该怎么做,避免Qt中的from-ASCII转换?
答案 0 :(得分:78)
有一个名为fromUtf8
的QString
函数需要const char*
:
QString str = QString::fromUtf8(content.c_str());
答案 1 :(得分:72)
QString::fromStdString(content)
更好,因为它更强大。另请注意,如果std::string
以UTF-8编码,那么它应该提供与QString::fromUtf8(content.data(), int(content.size()))
完全相同的结果。
答案 2 :(得分:5)
通常,进行转换的最佳方法是使用方法fromUtf8,但问题是当字符串依赖于语言环境时。
在这些情况下,最好使用fromLocal8Bit。例如:
std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
答案 3 :(得分:0)
由于fromStdString的 Qt5 在内部使用fromUtf8,因此您可以同时使用两者:
inline QString QString::fromStdString(const std::string& s)
{
return fromUtf8(s.data(), int(s.size()));
}