Bonjour, j'ai 2 nombres ayant comme type std::string. Y a t-il un moyen de les additionner, par exemple en surchargeant l'operateur + ?
merci.
Bonjour, j'ai 2 nombres ayant comme type std::string. Y a t-il un moyen de les additionner, par exemple en surchargeant l'operateur + ?
merci.
Salut,
Etrange comme formulation mais soit !j'ai 2 nombres ayant comme type std::string
Il est tout a fait possible de le faire. Je te laisse aller sur google et taper un truc du genre "C++ surcharge des operateurs" tu verras de suite comment ca fonctionne et quelles possibiltes cela t'offre.
Bon courage
J'ai dej� essayer de surcharger l'operateur + mais sans succes. J'ai regard� un peu sur le net, et pareil.
un indice?
Voil� ce que j'avais tent�...
Et �a serait encore mieux si �a pouvait me retourner le resultat sous forme de std::string.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 int operator & +(std::string nb1, std::string nb2) { int res; res=nb1+nb2; return res; }
merci
???Voil� ce que j'avais tent�...
Code :
int operator & +(std::string nb1, std::string nb2)
{
int res;
res=nb1+nb2;
return res;
}
Outre les fautes de logique et de syntaxe, pourquoi surcharger cet operateur si c pour mettre a l'interieur :
avec nb1 et nb2 string !!!
Code : S�lectionner tout - Visualiser dans une fen�tre � part res=nb1+nb2;
Sinon dans la doc de la classe string du C++ (tout premier endroit ou il est tres utils de chercher en cas de pb) :
http://www.cppreference.com/cppstrin...operators.html
Tous les operateurs utiles dont + sont deja definis![]()
Ben je sais pas, moi �a me semblais logique ce que j'avais fait
Mais, j'ai pas compris comment faire avec ce qui est dans la doc.
Il y a bien �a:
Mais je suppose que si je passe en parametre: 2 et 6 �a va me retourner 26, et non 8...
Code : S�lectionner tout - Visualiser dans une fen�tre � part string operator+(const string& s1, const string& s2 );
Oula ...
2 : int
6 : int
"2" : string, char*, ... ca depend
si tu fais "2"+"6" ca doit probablement marcher
A revoir les bases des types de donnees C++![]()
Salut � tous !
Personnellement, je me pose la question de la pertinence de repr�senter des chiffres sous forme de cha�nes de caract�res. � mon avis, il faut revoir la conception.
Sinon, au niveau des cha�nes de caract�res, l'op�rateur d'addition est surcharg� et effectue une concat�nation. Ainsi, le programme suivant :
Retourne sur la sortie standard la chaine � abcdef. �
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 #include <string> #include <iostream> int main (int argc, char **argv) { const std::string chaine1 = "abc"; const std::string chaine2 = "def"; std::cout << chaine1 + chaine2 << std::endl; return 0; } // main
Pour convertir une cha�ne de caract�res en entier, il existe deux m�thodes en C++. La premi�re vient du C, elle consiste � utiliser la fonction atoi de la biblioth�que standard C :
Le code pr�c�dent retourne � 14 � sur la sortie standard.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 #include <string> #include <iostream> #include <cstd> int main (int argc, char **argv) { const std::string chaine = "12"; const int entier = std::atoi(chaine) + 2; std::cout << entier << std::endl; } // main
La deuxi�me m�thode consiste � utiliser un flux sur une cha�ne de caract�res :
Ce code �galement affiche � 14 � sur la sortie standard.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 #include <string> #include <iostream> #include <sstream> int main (int argc, char **argv) { std::string chaine = "12"; std::istringstream ist (chaine); int entier; ist >> entier; std::cout << entier + 2 << std::endl; } // main
Pour surcharger l'op�rateur d'addition, tu peux faire �a :
Mais je te d�conseille cette approche. � mon avis il faut revoir la fa�on dont tu stockes tes donn�es.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 #include <string> #include <cstd> // ... int operator + (const std::string &chaine1, const std::string &chaine2) { return std::atoi(chaine1) + std::atoi(chaine2); } // int operator + (const std::string &, const std::string &)
� bient�t.
Le Farfadet Spatial
Partager