141 votes

Comment faire pour changer de chaîne en QString?

Quelle est la manière la plus basique de le faire?

242voto

sth Points 91594

Si compilé avec la STL de compatibilité, QString a une méthode statique pour convertir un std::string d'un QString:

std::string str = "abc";
QString qstr = QString::fromStdString(str);

137voto

Kamil Szot Points 4521
QString qstr("This is my c-string");

comme ici: http://lists.trolltech.com/qt-interest/2002-03/thread00047-0.html

13voto

shoosh Points 34322

Autre façon:

std::string s = "This is an STL string";
QString qs = QString::fromAscii(s.data(), s.size());

Ceci a l'avantage de ne pas utiliser .c_str() qui peut causer de l' std::string pour copier lui-même dans le cas où il n'y a pas de place pour ajouter l' '\0' à la fin.

10voto

wilhelmtell Points 25504
std::string s = "Sambuca";
QString q = s.c_str();

Attention: Cela ne fonctionnera pas si l' std::string contient \0s.

0voto

gavinb Points 9237

Voulez-vous dire une chaîne C, comme dans un char* chaîne de caractères, ou une C++ std::string objet?

De toute façon, vous utilisez le même constructeur, comme indiqué dans le QT de référence:

Pour une chaîne C, il suffit d'utiliser le principal constructeur:

char name[] = "Stack Overflow";
QString qname(name);

Pour un std::string, vous obtenez l' char* de la mémoire tampon et le passer à l' QString constructeur de:

std::string name2("Stack Overflow");
QString qname2(name2.c_str());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X