Frage

Ich habe eine std::string content bekam, dass ich weiß, UTF-8-Daten enthält. Ich möchte es konvertieren zu einem QString . Wie kann ich das tun, die Vermeidung der von-ASCII-Konvertierung in Qt?

War es hilfreich?

Lösung

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

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

Andere Tipps

QString::fromStdString(content) ist besser, da es robuster ist. Auch beachten Sie, dass, wenn std::string in UTF-8 kodiert ist, dann sollte es geben, genau das gleiche Ergebnis wie QString::fromUtf8(content.data(), int(content.size())).

In der Regel ist der beste Weg, um die Konvertierung zu tun, wird das Verfahren unter Verwendung von fromUtf8 , aber das Problem ist, wenn Sie Strings locale abhängig.

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

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

Da QT5 fromStdString intern verwendet fromUtf8, so dass Sie beide verwenden können:

inline QString QString::fromStdString(const std::string& s) 
{
return fromUtf8(s.data(), int(s.size()));
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top