Bonjour à vous,
Je débute évidemment en c++ et j'ai reçu un exercice à faire sur les string. L'exercice ne me pose pas de problème mais je dois utiliser un getline pour entrer un string qui possède au moins un espace et j'ai un petit soucis.
En effet, j'ai remarqué que si j'avais demandé un cin plus haut dans le code, le getline de la ligne 32 ne fonctionne pas (il ne me demande même pas de faire une entrée clavier).
Le bout de code :
Si je mets les cin des lignes 23 et 25 en commentaire, ça fonctionne très bien.
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 bool inclus(const string& ssch, const string& ch) { bool answer = false; unsigned int index = 0; int target = 0; while ((index < ch.size()) && (answer == false)) { if (ch[index] == ssch[target]) { ++target; if (target == ssch.size()) answer = true; } ++index; } return answer; } int main() { string sousChaine = ""; string chaine = ""; string ch1 = "mamzannnn"; string ch2 = "mamzan"; string marmelade; cout << " Quelle chaine ?" << endl << " "; cin >> chaine; cout << " Quelle sous chaine ?" << endl << " "; cin >> sousChaine; cout << (inclus(sousChaine, chaine)?" Oui c'est inclus !":" Non ce n'est pas inclus !"); if (compare(ch1,ch2) == 0) cout << " Les deux chaines sont les memes !"; else if (compare(ch1,ch2) > 0) cout << " La chaine CH1 est apres dans l'ordre alphabetique !"; else cout << " La chaine CH1 est avant la CH2 dans l'ordre alphabetique !"; getline(cin,marmelade); cout << marmelade; }
J'ai essayé de faire un cin.clear() mais ça ne fonctionne toujours pas.
J'utilise codeblock 13.12 comme environnement de dev.
Merci de prendre la peine de m'aider
Xavier P.
Partager