Конвертировать std :: string в QString - PullRequest
61 голосов
/ 02 декабря 2010

У меня есть std::string content, который, как я знаю, содержит данные UTF-8.Я хочу преобразовать его в QString.Как мне это сделать, избегая преобразования from-ASCII в Qt?

Ответы [ 4 ]

78 голосов
/ 02 декабря 2010

Есть функция QString, называемая fromUtf8, которая принимает const char*:

QString str = QString::fromUtf8(content.c_str());
72 голосов
/ 01 сентября 2013

QString::fromStdString(content) лучше, так как он более устойчивый.Также обратите внимание, что если std::string кодируется в UTF-8, то он должен давать точно такой же результат, как и QString::fromUtf8(content.data(), int(content.size())).

5 голосов
/ 02 сентября 2015

Обычно лучший способ выполнить преобразование - использовать метод fromUtf8 , но проблема в том, что у вас есть строки, зависящие от локали.

В этих случаях предпочтительнее использовать fromLocal8Bit .Пример:

std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
0 голосов
/ 15 января 2019

Поскольку Qt5 fromStdString внутренне использует fromUtf8, поэтому вы можете использовать оба:

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