9
votes

Comment insérer un résultat variable dans une chaîne en C ++

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, xxx

Comment allait-je faire quelque chose comme celui-ci avec C ++? Merci pour l'aide


2 commentaires

BTW ... Si votre projet est vraiment attaché à qt, il existe plusieurs bonnes raisons d'utiliser la classe qstring au lieu de std :: chaîne ... 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.


4 Réponses :


1
votes

J'utiliserais un Stringstream mais je ne suis pas sûr à 100% Comment cela s'adapte à votre boîtier Nstring ... xxx

Je pense Qstring a des aides nifty qui pourraient faire la même chose ... xxx


2 commentaires

qstring a sur Opérateur% 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



6
votes

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 xxx

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> xxx

qt a probablement ses propres types de chaîne, qui devrait fonctionner de manière similaire.


5 commentaires

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 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 ( ); 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 qui n'a pas de STR () fonction, Cela pourrait fonctionner si vous utilisez déjà C ++ 0x, avec une STL mise à jour, mais pour l'instant, vous devez STATIC_CAST STATIC_CAST OSTRingStream Avant d'appeler Str.


Voir ce message pour le code correct: Stackoverflow.com/questions / 303562 / ...



8
votes

Je suppose que nous parlons de la classe qstring de qt ici. Dans ce cas, vous pouvez utiliser la méthode arg : xxx

voir le Documentation QString Pour plus de détails sur les nombreuses surcharges de la méthode arg .


3 commentaires

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 () qui peut gérer les deux int s et qstring s.


Ken: Droite, vous devez envelopper l'int dans qstring :: Number () alors.



0
votes

Vous pouvez utiliser qstring :: sprintf . 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).

Vous êtes peut-être intéressé à voir des informations sur Le Différence entre qstring :: sprintf et qstring :: arg .


0 commentaires