90 votes

Convertir std : :string en QString

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

118voto

Jacques Points 101

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

102voto

Michael Mrozek Points 44120

Il y a une fonction QString fromUtf8 qui prend un const char* :

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

11voto

maxa Points 11

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

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

9voto

Tarod Points 3866

Habituellement, la meilleure façon de faire la conversion est d'utiliser la méthode fromUtf8, mais le problème est quand vous avez des chaînes dépendantes de la région.

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X