web-dev-qa-db-fra.com

Conversion de std :: string en QString

J'ai un std::string content qui, je le sais, contient des données UTF-8. Je veux le convertir en QString . Comment puis-je faire cela, en évitant la conversion from-ASCII dans Qt?

60
Fred Foo

Il existe une fonction QString appelée fromUtf8 qui prend un const char*:

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

QString::fromStdString(content) est meilleur car il est plus robuste. Notez également que si std::string est codé en UTF-8, il devrait donner exactement le même résultat que QString::fromUtf8(content.data(), int(content.size())).

68
Jackpap

Généralement, la meilleure façon de procéder à la conversion est d'utiliser la méthode fromUtf8 , mais le problème réside dans les chaînes dépendant de la localisation.

Dans ces cas, il est préférable d'utiliser fromLocal8Bit . Exemple:

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

Depuis Qt5 fromStdString utilise en interne fromUtf8, vous pouvez donc utiliser les deux:

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