Je viens de commencer à apprendre C ++ dans qt et je me demandais comment puis-je mettre des variables entraîner une chaîne? J'essaie d'utiliser ceci pour une application simple dans laquelle quelqu'un met son nom dans un champ de texte, puis appuie sur un bouton et affiche son nom dans une phrase. Je sais dans l'objectif-C, il serait comme, Comment allait-je faire quelque chose comme celui-ci avec C ++? Merci pour l'aide p> p>
4 Réponses :
J'utiliserais un Stringstream mais je ne suis pas sûr à 100% Comment cela s'adapte à votre boîtier Nstring ... Je pense
qstring code> a sur Opérateur% code> afaict défini (voir doc.qt.nokia.com/latest/qstring.html )
Voir la section appelée construction de chaîne plus efficace dans mon lien
Vous ne mentionnez pas quel type votre chaîne est. Si vous utilisez la bibliothèque standard, ce serait quelque chose dans les lignes de qui fonctionne pour des chaînes de concaténation, si vous souhaitez insérer d'autres types complexes, vous pouvez utiliser un StringStream comme ceci: < / p> qt a probablement ses propres types de chaîne, qui devrait fonctionner de manière similaire. p> p>
Là nous allons! Merci pour l'aide, je suis surpris que ce soit aussi simple.
@Natatos: Ce n'est pas très simple, dans mon esprit, car vous devez introduire une autre variable pour le ostringstream code> pour créer votre chaîne.
@Kenbloom: Eh bien, vous pouvez toujours le faire avec une temporaire, comme (std :: ostringstream () << "Bonjour," << nomfield << ", voici un int" << 7) .str ( ); code> mais j'essaie de l'éviter si possible.
@ K-ballo Ce n'est pas si facile car dès que vous utilisez <<, le flux est prévenu sur std :: ostream et code> qui n'a pas de STR () code> fonction, Cela pourrait fonctionner si vous utilisez déjà C ++ 0x, avec une STL mise à jour, mais pour l'instant, vous devez > STATIC_CAST CODE> STATIC_CAST OSTRingStream code> Avant d'appeler Str.
Voir ce message pour le code correct: Stackoverflow.com/questions / 303562 / ...
Je suppose que nous parlons de la classe code> qstring de qt ici. Dans ce cas, vous pouvez utiliser la méthode voir le Documentation QString Pour plus de détails sur les nombreuses surcharges de la méthode arg code>: arg code>. p> p>
Je suggère un seul Multi-Arg arg (): ... "). Arg (i, total, nom de fichier). Plus robuste, au cas où i ou total contiennent par exemple"% 1 ". Et probablement aussi plus vite.
@Frankosterfeld: Il n'y a pas de surcharge sur arg () code> qui peut gérer les deux int code> s et qstring code> s.
Ken: Droite, vous devez envelopper l'int dans qstring :: Number () alors.
Vous pouvez utiliser Vous êtes peut-être intéressé à voir des informations sur Le Différence entre qstring :: sprintf code>. Je n'ai pas trouvé de bon exemple de son utilisation encore, cependant. (Si quelqu'un d'autre en trouve un, n'hésitez pas à le modifier à cette réponse). P>
qstring :: sprintf code> et . p> qstring :: arg code>
BTW ... Si votre projet est vraiment attaché à qt, il existe plusieurs bonnes raisons d'utiliser la classe
qstring code> au lieu destd :: chaîne code> ... une autre "Partage implicite". Pour une certaine perspective: Stackoverflow.com/Questtions/1618798/..."Partage implicite" est agréable lorsque vous avez une mémoire limitée et un noyau de la CPU, mais ralentit des programmes multi-threads.