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.