saturne_1606
Messages postés29Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention23 juin 2006
-
13 mai 2004 à 22:52
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
14 mai 2004 à 10:23
Bonjour a tous!
Malgré mes recherches sur le forum, je n'est pas trouver reponse a mon probleme.
Bon voila, j'ai surdéfini l'operateur >> pour une classe entreprise comme suit:
istream& operator >>(istream& in, entreprise& e)
{
char c='\0';
string name, adress, fix, site, act, num_fax;
bool ok=true;
in >> c;
if (c!='(') ok=false;
else
{
in >> name>>c;
if (c!=';') ok=false;
else
{
in >> adress>>c;
if (c!=';') ok=false;
else
{
in >> fix>>c;
if (c!=';') ok=false;
else
{
in >> site>>c;
if (c!=';') ok=false;
else
{
in >> act>>c;
if (c!=';') ok=false;
else
{
in >> num_fax>>c;
if (c!=')') ok=false;
}
}
}
}
}
}
if (ok)
{
e.nom=name; e.adresse=adress; e.num_tel_fixe=fix; e.www=site; e.activite=act; e.fax=num_fax;
}
else in.clear(ios::badbit | in.rdstate());
return in;
}
puis dans voila une fonction qui utilise celle de dessus:
void carnet::operator ++(int inutil)
{
int ch;
do
{
cout << "Vous pouvez:"<<endl
<< "\t0) Revenir au menu principal"<<endl
<< "\t1) Ajouter une fiche Entreprise"<<endl
<< "\t2) Ajouter une fiche Ami"<<endl
<< "\t3) Ajouter une fiche Famille"<<endl
<< "\t4) Ajouter une fiche Boulot"<<endl;
do
{
system("PAUSE");//Ajout pour debugger
ch = choix_menu();
if (cin.bad()) cout <<"cin bad"<<endl;//Ajout pour debugger
}while((ch<0)||(ch>4));
switch (ch)
{
case 0: // retour au menu précédent
return;
case 1: //ajout entreprise
elem_entreprise.push_front();
cout << "Format: ( Nom ; Adresse ; N fixe ; Site ; Activite ; N fax )"<<endl;
//cin >> *(elem_entreprise.begin());
if (!(cin >> *(elem_entreprise.begin())))
{
elem_entreprise.erase(elem_entreprise.begin());
while(cin.get()!='\n') {} //essai pour vider le buffer de cin
}
else elem_entreprise.sort();
break;
case 2: //modif ami
elem_ami.push_front();
cout << "Format: ( Nom ; Adresse ; N fixe ; Site ; N portable ; Email ; Naissance )"<<endl;
cin >> *(elem_ami.begin());
elem_ami.sort();
break;
case 3: //modif famille
elem_famille.push_front();
cout << "Format: ( Nom ; Adresse ; N fixe ; Site ; N portable ; Email ; Naissance )"<<endl;
cin >> *(elem_famille.begin());
elem_famille.sort();
break;
case 4: //modif boulot
elem_boulot.push_front();
cout << "Format: ( Nom ; Adresse ; N fixe ; Site ; N portable ; Email ; Fonction )"<<endl;
cin >> *(elem_boulot.begin());
elem_boulot.sort();
}
}while(ch!=0);
}
Mais voila, lors de mon "essai" pour vider le buffer de cin, la fonction ne s'arrete pas.
Je vois pas le probleme.
Merci gracieusement pour votre future aide.
saturne_1606
Messages postés29Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention23 juin 2006 13 mai 2004 à 23:58
Donc ca remplace avantageusement mon code :
while(cin.get()!='\n'){}
Merci encore.
Je debute en c++ et je voudrai m'attaquer trés prochainement au Visual C++. Tu saurais pas, par hasard, où je pourrais trouver des cours (pour visual) en français? G pa encore chercher lol.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 14 mai 2004 à 10:23
Voici 2 liens ou tu trouveras de l'aide et sur le Visual...
Le deuxieme lien est en fait une liste de cours sur le C++ .. Tu y trouveras surement de quoi faire!
Ya toute les bases avec quelques rappelles de notions et c'est plutot bien fait ...
Sans oublier l'enorme avantage que ces 2 tutoriels sont en francais et ne font pas reference a la MFC :)