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