85

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

4

4 回答 4

111

QString::fromStdString(content)更好,因为它更健壮。另请注意,如果std::string以 UTF-8 编码,则它应该给出与QString::fromUtf8(content.data(), int(content.size())).

于 2013-09-01T11:32:27.330 回答
98

There's a QString function called fromUtf8 that takes a const char*:

QString str = QString::fromUtf8(content.c_str());
于 2010-12-02T17:51:11.910 回答
9

由于Qt5 fromStdString 内部使用fromUtf8,所以你可以同时使用:

inline QString QString::fromStdString(const std::string& s) 
{
return fromUtf8(s.data(), int(s.size()));
}
于 2019-01-15T09:42:35.003 回答
8

通常,进行转换的最佳方法是使用方法fromUtf8,但问题是当您的字符串依赖于语言环境时。

在这些情况下,最好使用fromLocal8Bit。例子:

std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
于 2015-09-02T12:34:40.863 回答