Convertir const char * en QString
- Je utiliser la sortie d'une fonction d'un type const char*
et j'ai besoin de les convertir à QString
.
Remarque: à l'intérieur de cette fonction, ce sont des lignes de code pour renvoyer les const char*
char* ClassA::getData() const{
return const_cast<char *> (_foo.c_str());
}
où _foo
est std::string
.
J'ai essayé d'utiliser les lignes de code suivantes, mais toujours obtenir la chaîne de caractères vide (en fait, ce n'est pas vide, mais contient seulement les nouvelles lignes de caractères et de la négligence de tous les autres personnages).
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());
source d'informationauteur Mahmoud Hassan
Vous devez vous connecter pour publier un commentaire.
Le code ci-dessous devrait fonctionner correctement. Votre problème est probablement quelque part d'autre. Merci de faire une nouvelle version.
L'erreur sera quelque part dans votre code plus complexe que vous ne l'avez pas partagé avec nous. Vous êtes probablement obtenir des problèmes avec la configuration de _foo de manière incorrecte.
Comme vous l'avez souligné vous-même, vous ne pouvez pas modifier l'interface, mais il est préférable de prendre note que, dans un monde idéal, vous ne serait pas mélanger les mst chaînes avec QStrings. Vous utilisez simplement QStrings tout à fait dans votre code.
Même si vous avez besoin d'utiliser std ou raw char* types pour une raison quelconque, il est préférable de ne pas faire une telle const exprimés dans le code depuis QString va faire face à de constantes chaînes de caractères passées.
main.cpp
principal.pro
De sortie