将 std::string 转换为 QString

问题描述 投票:0回答:4

我有一个

std::string content
,我知道它包含 UTF-8 数据。我想将其转换为
QString
。我该如何做到这一点,避免 Qt 中的 from-ASCII 转换?

c++ string qt utf-8 qstring
4个回答
138
投票
QString::fromStdString(content)

这更好,因为它更稳健。

另请注意,如果

std::string
以 UTF-8 编码,那么它应该给出与
QString::fromUtf8(content.data(), int(content.size()))
完全相同的结果。


108
投票

有一个名为

QString
fromUtf8
函数,它需要一个
const char*
:

QString str = QString::fromUtf8(content.c_str());

16
投票

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

inline QString QString::fromStdString(const std::string& s) 
{
return fromUtf8(s.data(), int(s.size()));
}

9
投票

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

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

std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
© www.soinside.com 2019 - 2024. All rights reserved.