it-swarm.dev

Converter std :: string para QString

Eu tenho um std::string content que eu sei contém dados UTF-8. Eu quero convertê-lo para um QString . Como faço isso, evitando a conversão de-ASCII em Qt?

60
Fred Foo

Há uma função QString chamada fromUtf8 que leva um const char*:

QString str = QString::fromUtf8(content.c_str());
77
Michael Mrozek

QString::fromStdString(content) é melhor, pois é mais robusto. Observe também que, se std::string estiver codificado em UTF-8, ele deverá fornecer exatamente o mesmo resultado que QString::fromUtf8(content.data(), int(content.size())).

68
Jackpap

Normalmente, a melhor maneira de fazer a conversão é usando o método fromUtf8 , mas o problema é quando você tem sequências dependentes de código de idioma.

Nesses casos, é preferível usar fromLocal8Bit . Exemplo:

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

Como Qt5 fromStdString usa internamente fromUtf8, então você pode usar os dois:

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