Konvertieren const char* QString

Ich die Ausgabe einer Funktion zu einem Typ const char* und ich brauche, um zu konvertieren, um QString.

Hinweis: innerhalb dieser Funktion, werden diese code-Zeilen zurückgeben, die const char*

char* ClassA::getData() const{
    return const_cast<char *> (_foo.c_str());
}

wo _foo ist std::string.

Ich versuchte, verwenden Sie die folgenden Zeilen von code, aber bekomme immer eine leere Zeichenfolge (eigentlich nicht leer, sondern enthalten nur die neue Linien-Zeichen und vernachlässigen alle anderen Zeichen).

QString foo1 = QString(temp.getData());
QString foo2 = QString::fromLocal8Bit(temp.getData());
QString foo3 = QString(QLatin1String(temp.getData()));
QString foo4 = QString::fromAscii(temp.getData());
QString foo5 = QString::fromUtf8(temp.getData());
Zeig mehr code. Dies ist nicht ausreichend, um zu helfen. QString foo5 = QString::fromUtf8(temp.getData()); funktionieren sollte.
QString akzeptiert const char *. Keine Notwendigkeit, aus dem Weg gehen, zu behaupten, dass es nicht konstant Daten.
seltsam alle diese Versionen bekamen den gleichen "leeren" string. Ich denke, dass das problem in der const_cast<char *> in der Funktion, die ich nenne. aber ich habe keine Berechtigung, die Funktion zurück std:string oder normal char *
In Fällen wie diesem, die ich speichern, wird die Funktion Ausgabe (das Ergebnis getData()) zu einer Variablen und überprüfen Sie mit dem debugger, ob die Funktion wirklich gibt einen gültigen string. Dann gehen mit der Umstellung auf QString. Es hat zu konvertieren, da QString hat einen passenden Konstruktor (qt-project.org/doc/qt-4.8/qstring.html#QString-8). Wie chris schon sagte, versuchen, ohne zu Gießen, einfach mit const char*.
Ich beginne zu denken, dass _foo nicht richtig eingestellt ist im code herum. Ich konnte es nicht erklären sonst. 🙂

InformationsquelleAutor Mahmoud Hassan | 2013-12-29

Schreibe einen Kommentar