getline(cin) behaving unexpectedly (c++) -
मेरे पास निम्न फ़ंक्शन हैं:
शून्य खिलाड़ियों (स्ट्रिंग और नाम) {char सत्यापित करें; Cout & lt; & lt; "खिलाड़ी नाम दर्ज करें:"; getline (CIN, नाम); Cout & lt; & lt; endl & lt; & lt; "आपका नाम है:" + name + ", क्या यह सही है? (हाँ के लिए वाई, कोई अन्य कुंजी नहीं):"; CIN & gt; & gt; को सत्यापित; अगर ((सत्यापित करें == 'वाई') || (सत्यापित करें == 'वाई')) {सत्यापित == 'एन'; } अन्य {playersetup (नाम); }}
यह खिलाड़ी के नाम के लिए पूछता है, उपयोगकर्ता को अपने नाम को सत्यापित करने के लिए कहता है, यदि वह खुद को शुरू करने के लिए कॉल नहीं करता है। हालांकि, यह ऐसा उत्पाद है जो दिखता है:
प्लेयर नाम दर्ज करें:
उपयोगकर्ता प्रवेश करता है: जॉन स्मिथ
आपका नाम है: जॉन स्मिथ, क्या यह सही है? (हाँ के लिए वाई, किसी भी अन्य कुंजी को नहीं):
उपयोगकर्ता में प्रवेश करता है: n
प्लेयर नाम दर्ज करें:
(उपयोगकर्ता इनपुट का मौका नहीं दिया जाता है कुछ भी)
आपका नाम है:, क्या यह सही है? (हाँ के लिए, हाँ के लिए कोई अन्य चाबी):
क्या यहां तर्क त्रुटि है या एक गड़बड़ी का एक पहलू है जो मुझे याद है?
नया अक्षर कैरेक्टर इनपुट में रहता है जैसे कि & gt; & gt; चार
उपयोगकर्ताओं को केवल एकल वर्ण प्रतिक्रिया का उपभोग करता है जब std :: getline ()
को अगली बार लागू किया जाता है, तो वह नए अक्षरों को पढ़ता है; एक खाली पंक्ति उपयोगकर्ता को नाम के लिए फिर से पूछने से पहले नए पंक्ति को उपभोग, या छोड़ें:
#include & lt; limits & gt; // 'std :: numeric_limits' std :: cin.ignore (std :: numeric_limits & lt; std :: streamsize & gt; :: max (), '\ n') के लिए //
Comments
Post a Comment