الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هي فائدة cin.clear !؟

بدأه khaled_prg في 11 أكتوبر 2010 · 4 رد · 722 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

سبق و أن أعطاني أحد الإخوة هذا الكود :

#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 إلى الوضع الطبيعي ولكن لماذا نحتاج إلى هذه الإعادة !؟

تحياتي.

تم تعديل هذه المشاركة بواسطة khaled_prg في 11 أكتوبر 2010 في 20:00

#3
khaled_prg كتب:

بانتظار جوابكم يا أبطال البرمجة, لا أريد أن احدد الأشخاص فالمجال مفتوح :)

google it or go to

http://www.cplusplus.com/reference/iostream/ios/clear/

بشكل بسيط هذه ال method بتنضف كل شيء كل ال flags .

3
#4
اقتباس
google it or go to

http://www.cplusplus...ream/ios/clear/

بشكل بسيط هذه ال method بتنضف كل شيء كل ال flags

+1

يا ريت لو تترجم لي خلاصة الصفحة لأنني لا أعرف الإنجليزية :blush:

مواضيع مشابهة