Конвертировать std :: string to qstring
Вопрос
У меня есть 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()));
}