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.