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