it-swarm.com.de

Konvertieren Sie std :: string in QString

Ich habe einen std::string content, von dem ich weiß, dass er UTF-8-Daten enthält. Ich möchte es in eine QString konvertieren. Wie mache ich das, um die Umwandlung von ASCII in Qt zu vermeiden?

60
Fred Foo

Es gibt eine QString-Funktion namens fromUtf8 , die einen const char* nimmt:

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

QString::fromStdString(content) ist besser, da sie robuster ist. Beachten Sie auch, dass, wenn std::string in UTF-8 codiert ist, genau dasselbe Ergebnis wie QString::fromUtf8(content.data(), int(content.size())) ausgegeben werden soll.

68
Jackpap

Normalerweise wird die Konvertierung am besten mit der Methode fromUtf8 durchgeführt. Das Problem ist jedoch, wenn Sie locale-abhängige Zeichenfolgen verwenden.

In diesen Fällen ist es bevorzugt, fromLocal8Bit zu verwenden. Beispiel:

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

Da Qt5 fromStdString intern fromUtf8 verwendet, können Sie beide verwenden:

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