أحاول أن أقوم بعمل برنامج بسيط، يطلب من المستخدم الاسم الكامل ولكن تظهر مشكلة وهي أن التابع cin يقوم بتقسيم المدخلات بالمسافات ويأخذ أول كلمة فقط:
std::cout <<"Enter your full name: ";
std::string name{};
std::cin >> name;// هنا يتم تخزين أول كلمة فقط
std::cout <<"Enter your age: ";
std::string age{};
std::cin >> age;// هنا يتم تخزين ثاني كلمة
std::cout <<"Your name is "<< name <<" and your age is "<< age <<'\n';
عندما يدخل المستخدم أكثر من كلمة مرة واحدة يتم إعتبار أن الكلمة الثانية هي المدخل للمتغير age :
Enter your full name: Mohssen Ahmed
Enter your age: Your name is Mohssen and your age is Ahmed
لاحظ كيف تم تخزين الكلمة Ahmed في المتغير age ولم ينتظر إلى أن يقوم المستخدم بإدخال القيمة الثانية.
السؤال
Mohssen A Mohssen
أحاول أن أقوم بعمل برنامج بسيط، يطلب من المستخدم الاسم الكامل ولكن تظهر مشكلة وهي أن التابع cin يقوم بتقسيم المدخلات بالمسافات ويأخذ أول كلمة فقط:
عندما يدخل المستخدم أكثر من كلمة مرة واحدة يتم إعتبار أن الكلمة الثانية هي المدخل للمتغير age :
Enter your full name: Mohssen Ahmed Enter your age: Your name is Mohssen and your age is Ahmed
لاحظ كيف تم تخزين الكلمة Ahmed في المتغير age ولم ينتظر إلى أن يقوم المستخدم بإدخال القيمة الثانية.
ما سبب هذه المشكلة؟ وكيف أقوم بحلها؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.