将std :: string转换为QString

时间:2010-12-02 17:45:58

标签: c++ string qt utf-8 qstring

我知道std::string content包含UTF-8数据。我想将其转换为QString。我该怎么做,避免Qt中的from-ASCII转换?

4 个答案:

答案 0 :(得分:78)

有一个名为fromUtf8QString函数需要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()));
}