c++ - Why is std::getline() skipped? -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 2 जवाब
- 5 जवाब
मेरे पास यह C ++ सरल प्रोग्राम है;
#include & lt; iostream & gt; Std :: endl का उपयोग कर; Std :: cout का उपयोग कर; Std :: cin का उपयोग कर; Std :: getline का उपयोग कर; #include & lt; स्ट्रिंग & gt; Std :: string का उपयोग कर; संरचना रिपॉजिटरी {string name; स्ट्रिंग पथ; स्ट्रिंग प्रकार; स्ट्रिंग कमांड; }; Int main () {भंडार आरपी; Cout & lt; & lt; "\ N रेपो नाम दर्ज करें:"; Cin & gt; & gt; rp.name; Cout & lt; & lt; "रेपो पथ दर्ज करें:"; Cin & gt; & gt; rp.path; Cout & lt; & lt; "रेपो प्रकार दर्ज करें:"; Cin & gt; & gt; rp.type; Cout & lt; & lt; "रेपो आदेश दर्ज करें:"; गेटलाइन (cin, rp.command); Cout & lt; & lt; "\ N रिपोजिटरी जानकारी:" & lt; & lt; endl; Cout & lt; & lt; आरपी.नाम & lt; & lt; "\ N" & lt; & lt; Rp.path & lt; & lt; "\ N" & lt; & lt; आरपी। टाइप & lt; & lt; "\ N" & lt; & lt; Rp.command & lt; & lt; endl; वापसी 0; }
जब निष्पादन को मिलते हैं (cin, rp.command) कार्यक्रम बस प्रिंट "दर्ज करें रेपो आदेश:" और getline (cin, rp.command) लाइन को छोड़ देता है ताकि उपयोगकर्ता जवाब देने के लिए समय नहीं दिया। संभावित समस्या क्या हो सकती है?
।
मूल रूप से, cin & gt; & gt;
उपयोगकर्ता द्वारा दबाए जाने पर बफर से नई पंक्तियाँ नहीं निकालता है। getline ()
प्रवेश के साथ उपयोगकर्ता इनपुट के लिए यह गलती करता है।
आप उपयोग करने से पहले उन अतिरिक्त वर्णों से छुटकारा पाने के लिए cin.ignore ()
का उपयोग कर सकते हैं। getline ()
।
Comments
Post a Comment