Insérer la valeur d'une variable dans une chaine de caractère [Résolu]

Signaler
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009
-
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009
-
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

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
16


<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>
Messages postés
100
Date d'inscription
lundi 30 octobre 2006
Statut
Membre
Dernière intervention
14 avril 2009

MaChaine = MaChaine + i;
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

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
Messages postés
100
Date d'inscription
lundi 30 octobre 2006
Statut
Membre
Dernière intervention
14 avril 2009

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;
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Ok merci je vais tester la technique du flux
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

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?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
16
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>
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Nickel merci encore

Damien