IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Additionner 2 strings


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Par d�faut Additionner 2 strings
    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.

  2. #2
    Membre confirm�
    Inscrit en
    Avril 2008
    Messages
    95
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par d�faut
    Salut,

    j'ai 2 nombres ayant comme type std::string
    Etrange comme formulation mais soit !
    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

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Par d�faut
    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�...

    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;
    }
    Et �a serait encore mieux si �a pouvait me retourner le resultat sous forme de std::string.

    merci

  4. #4
    Membre confirm�
    Inscrit en
    Avril 2008
    Messages
    95
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par d�faut
    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 !!!

    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

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Par d�faut
    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:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    string operator+(const string& s1, const string& s2 );
    Mais je suppose que si je passe en parametre: 2 et 6 �a va me retourner 26, et non 8...

  6. #6
    Membre confirm�
    Inscrit en
    Avril 2008
    Messages
    95
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par d�faut
    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++

  7. #7
    Membre �clair�
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de pr�cision�
    Inscrit en
    Avril 2008
    Messages
    190
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : En cours de pr�cision�

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par d�faut
    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 :

    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
    Retourne sur la sortie standard la chaine � abcdef. �

    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 :

    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
    Le code pr�c�dent retourne � 14 � sur la sortie standard.

    La deuxi�me m�thode consiste � utiliser un flux sur une cha�ne de caract�res :

    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
    Ce code �galement affiche � 14 � sur la sortie standard.

    Pour surcharger l'op�rateur d'addition, tu peux faire �a :

    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 &)
    Mais je te d�conseille cette approche. � mon avis il faut revoir la fa�on dont tu stockes tes donn�es.

    � bient�t.

    Le Farfadet Spatial

Discussions similaires

  1. Additionner deux String qui sont des nombres
    Par JDev_ dans le forum Requ�tes et SQL.
    R�ponses: 1
    Dernier message: 24/05/2012, 13h00
  2. �liminer un caractere d'un string
    Par no-vice dans le forum Langage
    R�ponses: 5
    Dernier message: 09/08/2002, 14h55
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    R�ponses: 4
    Dernier message: 15/07/2002, 09h47
  4. R�ponses: 2
    Dernier message: 05/06/2002, 12h29
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    R�ponses: 12
    Dernier message: 17/05/2002, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo