تأمين الإدخال في C ++

في البرامج الخاصة بك ، قد تكون هناك حاجة لطلب معلومات من المستخدم. في C ++ ، يتم جمع المعلومات باستخدام كائن "cin". إذا لم تقم بتأمين هذه المدخلات ، فمن المحتمل أن يكون البرنامج ضحية "تجاوز سعة المخزن المؤقت". في الواقع ، إذا تجاوز عدد الأحرف التي تم إدخالها حجم المخزن المؤقت المخطط له في الأصل ، فإن البيانات الأخيرة تحل محل البيانات الأخرى الموجودة في المجموعة ، وتؤثر البيانات الخاطئة على سجلات ESP و EBP.

يمكنك تأمين إدخال هذه البيانات بطرق مختلفة.

باستخدام طريقة get ()

 #include int main () {char texte [100]؛ cin.get (texte ، 100) ؛ // premier paramètre: la où va la saisie second: taille max de saisie return 0؛ } 

يوضح هذا المثال استخدام cin.get.

إذا تجاوز النص الذي تم إدخاله الحجم المخصص ، فسيتم تجاهل الأحرف الإضافية.

باستخدام طريقة "getline ()"

تعمل هذه الطريقة مثل get () ، لكنها تزيل الحرف في نهاية المخزن المؤقت.

بالفعل ، للتحقق من صحة النص ، يضغط المستخدم على مفتاح "Enter" ، والذي يتوافق مع الحرف ' \ n '.

getline () يزيل هذه الشخصية.

== إنه لا يعمل !!

إليك رمز لا يعمل بشكل صحيح:

 # تتضمن استخدام مساحة الاسم std؛ int main () {char entree [100]؛ choix int. cout <> choix؛ cout << "Entrez un texte:"؛ cin.get (texte ، 100) ؛ cout << "Saisies terminées!"؛ عودة 0 ؛ } 

في الواقع ، لم يتم تنفيذ الإدخال الثاني ، وتظهر الرسالة "تم الإدخال! / Saisies terminées!".

كيفية حل هذه المشكلة؟

يجب عليك استخدام الأسلوب " ignore () ".

طريقة التجاهل ()

تسمح هذه الطريقة بتجاهل بعض الأحرف في سلسلة.

 # تتضمن استخدام مساحة الاسم std؛ int main () {char entree [100]؛ choix int؛ cout <> choix؛ cout << "Entrez un texte:"؛ cin.ignore (1 ، '\ n') ؛ // ignore le caractère d'entrée، qui validait auparavant la saisie. cin.get (texte ، 100) ؛ cout << "Saisies terminées!"؛ عودة 0 ؛ 

مع هذه الطريقة ، يتم تجاهل حرف الإدخال ، ويتم حل المشكلة.

المقال السابق المقالة القادمة

نصائح الأعلى