Bonjour.
J'ai des saissies à faire en C, avec C++ Builder 6.
********************
création du client
Nom: Pronto
Prénom: Larry
Numéro civique: 48
Rue: Ville:
********************
Le résultat est entre les étoiles, en Gras ce sont les valeurs entrées.
Je n'arrive pas a entrer la" Rue", car il y a quelque chose dans le tampon(buffer) du clavier et saute directement à la saissie de "Ville". J'ai tenté cin.clear(), cin.ignore(1, '\n'), ou les deux ensembles, puis cin.fail() avec les deux précédents. Je n'arrive pas a comprendre ce qu'il y a dans le buffer, et comment vider le buffer. Ci-inclus, vous trouverai cet exemple.
J'utilise une macro, qui est insérée avec chaque lecture
#include <conio.h>
#include <iostream.h>
//------------------------------------------------------------------------
#define CLR_BUFFER if (cin.fail()) {\
cin.clear();\
cin.ignore(80,'\n');}
void main(void)
{
string Nom, Prenom, NoCivique, Rue, Ville;
clrscr();
cout << "\ncr\x82" "ation du client"
<< "\n\nNom: ";
getline(cin, Nom);
CLR_BUFFER;
cout << "Pr\x82nom: ";
getline(cin, Prenom);
CLR_BUFFER;
cout << "Num\x82ro civique: ";
cin >> NoCivique;
CLR_BUFFER;
cout << "Rue: ";
getline(cin, Rue);
CLR_BUFFER;
cout << "Ville: ";
getline(cin, Ville);
CLR_BUFFER;
getch();
}
//------------------------------------------------------------------------
Merci de vous pencher sur mon problème.
Larry