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.
seltsam alle diese Versionen bekamen den gleichen "leeren" string. Ich denke, dass das problem in der
In Fällen wie diesem, die ich speichern, wird die Funktion Ausgabe (das Ergebnis
Ich beginne zu denken, dass _foo nicht richtig eingestellt ist im code herum. Ich konnte es nicht erklären sonst. 🙂
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code unten sollte funktionieren. Dein Problem wahrscheinlich woanders. Bitte sauber aufbauen.
Wird der Fehler irgendwo in Ihrem komplexeren code, den Sie noch nicht mit uns geteilt. Sind Sie wahrscheinlich immer Probleme mit der Einstellung _foo falsch.
Als Sie merkte selbst, Sie können nicht ändern, die Schnittstelle, aber es ist besser, nehmen Sie eine Notiz, in einer idealen Welt, würden Sie nicht mischen std-strings mit QStrings. Sie würde halt QStrings insgesamt in Ihrem code.
Selbst wenn Sie verwenden müssen, std oder rohen char* Typen aus irgendeinem Grund, ist es besser, nicht zu tun, solche const-cast in den code, da QString fertig werden mit const-strings übergeben werden.
main.cpp
main.pro -
- Ausgang
getData()
versuchen, wieder den gleichen Weg wie bei der Frage:return const_cast<char *> (_foo.c_str());
Das habe ich gemacht, funktioniert Prima, die Antwort.
Ich selbst lief es durch qt 4 sowie 5 mit
qmake -r && make && ./main
.die compiler-Typ und-version benutzt du?
toll, willkommen.
InformationsquelleAutor lpapp