String et +

blueburry Messages postés 50 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 22 mai 2006 - 10 août 2005 à 15:44
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009 - 10 août 2005 à 15:59
bonjour,
je suis en train de programmer sur visual c++.
g un probleme avec les string, je fais:

char nom[26];
char sport[26];
string nom = &nom[0];
string sport = &sport[0];
string str1 = "je m'appelle"+nom+"et j'aime le"+sport;

je pense k'il n'est pas en train d'accepter le +.
ke dois-je faire en c++ pour concatener plusieurs chaines?
kelles headers dois-je importer?

il m'affiche les erreurs suivantes

c:\program files\microsoft visual studio\myprojects\serveurhttp\sessionhttp.cpp(63) : error C2784: 'class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> __cdecl std::operator +(_D,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not dedu
ce template argument for '' from 'char [147]'
c:\program files\microsoft visual studio\myprojects\serveurhttp\sessionhttp.cpp(63) : error C2677: binary '+' : no global operator defined which takes type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or
there is no acceptable conversion)

merci pour vos conseils.

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2005 à 15:56
&nom[0]; tu peux mettre nom, c'est plus court

Pour le reste, + est défini comme ca (en gros) (pour const char*)
string& string::operator+(const char* p);
Cet opérateur s'applique quand il y a une string à gauche et un char* à droite.
Tu peux faire string+char*, mais pas char*+string, c'est logique
string str1 = "je m'appelle";
str1 += nom;
str1 += " et j'aime le ";
str1 += sport;
Utilise toujours += au lieu de + qui va te générer plein d'objets temporaires et de copies inutiles
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
10 août 2005 à 15:59
+= est effectivement équivalent à append().
0
Rejoignez-nous