Insérer la valeur d'une variable dans une chaine de caractère

Résolu
Zakata Messages postés 59 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 17 juillet 2009 - 5 juil. 2007 à 23:55
Zakata Messages postés 59 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 17 juillet 2009 - 6 juil. 2007 à 23:00
Bonjour,

(Je suis débutant en C++)
Est il posible d'insérer la valeur d'une variable (int, bool, float...) dans une chaine de caractère (string) ?
du genre :

#include #include <string>
using namespace std
int main(void){    int i=648;    string MaChaine;    MaChaine+="Du text";    MaChaine+=i;}
Merci
Damien

8 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
6 juil. 2007 à 08:52


<code class="cpp_keyword2">#

include



<sstream>





int

main
()
{

//
créer
un
flux
de
sortie

std::
ostringstream oss;
//
écrire
un
nombre
dans
le
flux

oss
<
<
10
;
//
récupérer
une
chaîne
de
caractères

std::
string result
=
oss.
str
();
}
</code>
3
Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
6 juil. 2007 à 09:06
MaChaine = MaChaine + i;
0
Zakata Messages postés 59 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 17 juillet 2009
6 juil. 2007 à 12:46
Ok merci pour vos réponses

Laurent1024->Je ne connais pas encore les flux
.
<code class="cpp_keyword2">
<sstream> est il inclu dans  ?
</code>

Yunchi-> Je ne comprend pas chez moi ça ne marche pas, 
si je fais


MaChaine = "ABC  " + i;
cout<< MaChaine;

il me sort : 'ABC  ?' quelque soit la valeur de i (pour les valeurs que j'ai essayé)

Bonnejournée
0
Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
6 juil. 2007 à 18:26
ah si i est un string je sais que ca marche comme ca mais pour un int alors je sais pas en C++


essaye : MaChaine.insert(MaChaine.length , i);
ou sinon MaChaine += i;


sinon le truc du flux a l'air de marcher :)

ostringstream oss;

string chaine = "MaChaine";
int i = !;

oss << MaChaine << i;
MaChaine = oss.str();

cout << MaChaine;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zakata Messages postés 59 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 17 juillet 2009
6 juil. 2007 à 20:41
Ok merci je vais tester la technique du flux
0
Zakata Messages postés 59 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 17 juillet 2009
6 juil. 2007 à 22:30
Bon ca marche nickel il faut juste savoir que oss.clear() n'efface pas la chaine de charactère mais elle remet à zéro les bits d'erreur du flux.

sinon je vais encore abuser mais la fonction find() de la classe string me renvoie 4294967295 lorsqu'elle ne trouve pas le charatere rechercher. C'est quoi 4294967295 c'est le nombre max de charactères?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
6 juil. 2007 à 22:47
http://www.cplusplus.com/reference/string/string/find.html

Tu trouvera ce que tu veux :)
<tt><tt>size_t find ( const string& str, size_t pos = 0 ) const;
size_t find ( const char* s, size_t pos, size_t n ) const;
size_t find ( const char* s, size_t pos = 0 ) const;
size_t find ( char c, size_t pos = 0 ) const;

</tt></tt>* str : npos is returned.<tt><tt>// different member versions of find in the same order as above:
found =str.find(str2);
if (found!=string::npos)
cout << "first 'needle' found at: " << int(found) << endl;

</tt></tt>
0
Zakata Messages postés 59 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 17 juillet 2009
6 juil. 2007 à 23:00
Nickel merci encore

Damien
0
Rejoignez-nous