Преобразовать std::string в QString - программирование
Подтвердить что ты не робот

Преобразовать std::string в QString

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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