تأمين الإدخال في 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 ؛
مع هذه الطريقة ، يتم تجاهل حرف الإدخال ، ويتم حل المشكلة.