اذهب إلى المحتوى

السؤال

نشر

أحاول أن أحصل على المستخدم على مدخل input وتخزين هذا المدخل في متغير boolean

bool answer {};
std::cin >> answer;

ولكن المشكلة أن الكود لا يعمل إلا إذا قام المستخدم بإدخال رقم 1 أو 0، أما إذا أدخل المستخدم كلمة true أو false يتم إعتبار القيمة دائمًا false، كيف يمكنني أن أخزن القيمة true أو false إذا قام المستخدم بإدخالهم ككلمات وليس كأرقام 0 أو 1؟

Recommended Posts

  • 1
نشر

حسب مرجع ++C :

اقتباس

If the type of v is bool and boolalpha is not set, then if the value to be stored is 0, false is stored, if the value to be stored is 1, true is stored, for any other value std::ios_base::failbit is assigned to err and true is stored.

وهذا يعني أنه سيتم تخزين القيمة true إذا قام المستخدم بإدخال الرقم 1، بينما سيتم تخزين القيمة false إذا قام بإدخال الرقم 0، ولتغير هذا السلوك يمكنك أن تستخدم boolalpha لتخزين القيمة true عندما يدخل المستخدم النص true، وتخزين القيمة false عند يدخل النص false:

bool accepted{};
std::cin >> std::boolalpha >> accepted;	// يجب أن تكون المدخلات كلمة true أو false
std::cout << accepted;

لاحظ كيف تم إستعمال boolalpha قبل تخزين القيمة في المتغير accepted، ولإيقاف هذا السلوك يمكنك أن تستعمل noboolalpha:
 

bool x{};
std::cin >> std::noboolalpha >> x;	// يجب أن تكون المدخلات 1 أو 0
std::cout << x;

ملاحظة: عند إستعمال boolalpha فسيتم معاملة كلا الرقمين 1 و 0 على أنهما قيمة false وبالتالي لا يمكن تخزين القيمة true في المتغير إلا إذا قام المستخدم بكتابة كلمة true فقط (بحروف صغيرة Lower case)

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...