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 :

probleme dans d'une fonction istringstream


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 1
    Par défaut probleme dans d'une fonction istringstream
    Bonjour,
    Je n'arrive pas à résoudre un problème avec ma fonction "istringstream". Le résultat de la fonction devrait être MotB en affichage. Mais je reçois en sortie "Le mot est introuvable" puis "MotB".
    Par contre, si je utilise la fonction istringstream sans la mettre dans une fonction. La cela fonctionne, je reçois le bon résultat ("MotB").

    Code avec fonction istringstream dans la fonction Decoupage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <vector>
    using std::cout;
    using std::endl;
    using std::string;
    using std::getline;
    using std::istringstream;
    using std::vector;
     
    string Decoupage(string W){
    vector<string>Mot{};/*Tableau dynamique*/
     
    string X{"Le mot est introuvable"};
    istringstream ListeIndices("MotA|MotB|MotB");
    string Section;
     
    while(getline(ListeIndices, Section, '|')){
    Mot.push_back(Section);/*Insertion des donnees dans le tableau*/
                                              }/*fin de la mise tableau de la découpe*/
    int taille = Mot.size();
    for(int I=0;I<taille;I++){
               if(W == Mot[I]){return Mot[I];break;}/*Mot trouvé*/
               else{return X;break;}/*Mot Introuvable*/
                             }/*fin du for*/
    }/*fin de la fonction Decoupage*/
     
    int main(){
    string Word{"MotB"};
    string ResA = Decoupage(Word);
    cout<<ResA<<endl;/*Affichage resultat : MotB et Le mot est introuvable */
    }/*fin du main*/
    Affiche "Le mot est introuvable" puis "MotB"

    istringstream non dans une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <vector>
    using std::cout;
    using std::endl;
    using std::string;
    using std::getline;
    using std::istringstream;
    using std::vector;
    int main(){
     
    string Word{"MotB"};
    vector<string>Mot{};/*Tableau dynamique*/
    istringstream ListeIndices("MotA|MotB|MotB");
    string Section;
     
    while(getline(ListeIndices, Section, '|')){
    Mot.push_back(Section);/*Insertion des donnees dans le tableau*/
                                              }/*fin du while pour la mise en tableau du découpage*/
    int taille = Mot.size();
    for(int I=0;I<taille;I++){
               if(Word == Mot[I]){cout<<Mot[I]<<endl;break;}/*Mot trouve*/
               else{cout<<"Le mot est introuvable"<<endl;}/*erreur*/
                             }/*fin du for*/
    }/*fin du main*/
    Affiche le bon résultat "MotB"

    Qu'est ce qu'il cloche dans ma fonction Decoupage pour que cela ne fonctionne pas.
    C'est incompréhensible, le code est quasiment le même. Je n'ai pas d'erreurs ni de warning
    lors de la compilation.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Sans commentaire inutile et avec une indentation normale, tu prends 2s pour te (re)lire et ça saute aux yeux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for(int I=0;I<taille;I++){
      if(W == Mot[I])
      {
        return Mot[I];
        break;
      }
      else
      {
        return X;
        break;
      }
    }
    Les break sont tout autant inutiles et les noms de variables mériteraient d'être changés.

    Ton "code qui marche" est tout autant mauvais. Au même endroit.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. [Débutant] Probleme pour lancer une fonction
    Par neptune2084 dans le forum MATLAB
    Réponses: 3
    Dernier message: 24/03/2015, 09h16
  2. Probleme link d'une fonction absente O_O
    Par faucheuse dans le forum DirectX
    Réponses: 3
    Dernier message: 27/02/2010, 17h08
  3. Probleme écriture d'une fonction en C
    Par Premium dans le forum C
    Réponses: 8
    Dernier message: 26/11/2005, 13h09
  4. Réponses: 8
    Dernier message: 14/11/2005, 11h27
  5. Probleme valeur de parametre dans une fonction
    Par TitouLolo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/05/2005, 13h56

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