Bonjour à tous!
J'utilise getline(cin,chaine) pour accepter d'office (ou pas!) la variable proposée ligne 22ou 27 ou 32.
Si je supprime la ligne 19 le programme valide automatiquement la 22 et mais attend la validation normale à la ligne 27 puis celle de la ligne 32.
Que se passe t-il?
Je rappelle que ce forum a comme titre débuter...
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
 
string FhCmtr="CLCMTR"+departem+".rtf";//fichier dates des dmaj
cout<<FhCmtr<<endl;
int clcmtr=0;
ifstream FhCmtrL(FhCmtr.c_str(),ios::in);
    std::vector<std::string>TblCmtr;
    string LignCmtr;
    while (getline(FhCmtrL,LignCmtr))
        {clcmtr++;
        TblCmtr.push_back(LignCmtr);
        cout<<clcmtr<<" "<<LignCmtr<<endl;}
        int szTblCmtr=0;
        szTblCmtr=TblCmtr.size();
        cout<<" "<<endl;//cin.get();
        string CmtrChxLe=CmtrListFhDeu.substr(0,1);
        string CmtrGrFam=CmtrListFhDeu.substr(1,2);
        string CmtrAnnee=CmtrListFhDeu.substr(3,4);
        cout<<"Clefs de recherches..:["<<CmtrChxLe<<"] et ["<<CmtrGrFam<<"] et ["<<CmtrAnnee<<"]"<<endl;
cin.get();
        cout<<" "<<endl;
        cout<<"<E>=["<<CmtrChxLe<<"]    ou           l:";
        getline(cin,CmtrChxLe);
        if (CmtrChxLe == "" ) {CmtrChxLe = CmtrListFhDeu.substr(0,1);}
        if (CmtrChxLe == "l") {CmtrChxLe = CmtrListFhDeu.substr(0,1);}
 
        cout<<"<E>=["<<CmtrGrFam<<"]   ou ? ou b/lanc:";
        getline(cin,CmtrGrFam);
        if (CmtrGrFam == "b" ) {CmtrGrFam = "  ";}
        if (CmtrGrFam == ""  ) {CmtrGrFam = CmtrListFhDeu.substr(1,2);}
 
        cout<<"<E>=["<<CmtrAnnee<<"] ou ? ou b/lanc:";
        getline(cin,CmtrAnnee);
        if (CmtrAnnee == "b" ) {CmtrAnnee ="    ";}
        if (CmtrAnnee == ""  ) {CmtrAnnee = CmtrListFhDeu.substr(3,4);}
Vidage de buffer?Le buffer se remplit où?Avant la ligne 1?

A vous lire bientôt!