Вопрос

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

Это было полезно?

Решение

Это QString Функция называется fromUtf8 это принимает А. const char*:

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

Другие советы

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

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

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

std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());

С Qt5. Отstdstring Internall использует fromutf8, поэтому вы можете использовать оба:

inline QString QString::fromStdString(const std::string& s) 
{
return fromUtf8(s.data(), int(s.size()));
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top