السلام عليكم
سبق و أن أعطاني أحد الإخوة هذا الكود :
#include<iostream>
using namespace std;
int main()
{
int x,y;
cout<<"x=";
cin>>x;
while(cin.fail())
{
cin.clear();
cin.sync();
cout<<"Une erreur s'est produite ! \a"<<endl;
cout<<"Valeur impossible !, Veuillez entrer une valeur entier : "<<endl;
cout<<"x=";
cin>>x;
}
cin.sync();
cout<<"y=";
cin>>y;
while(cin.fail())
{
cin.clear();
cin.sync();
cout<<"Une erreur s'est produite ! \a"<<endl;
cout<<"Valeur impossible !, Veuillez entrer une valeur entier : "<<endl;
cout<<"y=";
cin>>y;
}
cout<<x<<" + "<<y<<" = "<<x+y<<endl;
system("pause");
return 0;
}الكود يعالج مشكلة التحقق من صحة إدخال عدد صحيح و يستمر في طلب الإدخال ما دامت المُدخلات خاطئة (ليست عددا صحيحا ), حسب ما قال الأخ (الذي أعطاني الكود) فإنه إذا حدث خطأ في الإدخال يجب أن نستعمل الدالة cin.sync لنتظيف الـ buffer من المُدخلات الخاطئة (العالقة) و لكن ما هي فائدة cin.clear !؟, البعض يقول بأنها تعيد حالة cin.fail إلى الوضع الطبيعي ولكن لماذا نحتاج إلى هذه الإعادة !؟
تحياتي.