कहो मेरे पास है:

int lol;
cout << "enter a number(int): ";
cin >> lol
cout << lol;

अगर मैं 5 टाइप करता हूँ तो यह 5 कोट करेगा। अगर मैं fd टाइप करता हूँ तो यह कुछ संख्याएँ लिख देता है। मैं मान कैसे निर्दिष्ट कर सकता हूं, जैसे कहें कि मैं इसे केवल एक int चाहता हूं?

0
user1189494 4 फरवरी 2012, 20:53

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप fd टाइप करते हैं तो यह कुछ नंबर आउटपुट करेगा क्योंकि वे नंबर वही हैं जो lol को असाइन किए जाने से पहले उनमें होते हैं। cin >> lol lol को नहीं लिखता है क्योंकि इसमें डालने के लिए कोई स्वीकार्य इनपुट नहीं है, इसलिए यह केवल इसे अकेला छोड़ देता है और मूल्य वही है जो कॉल से पहले था। फिर आप इसे आउटपुट करते हैं (जो यूबी है)।

यदि आप यह सुनिश्चित करना चाहते हैं कि उपयोगकर्ता ने कुछ स्वीकार्य दर्ज किया है, तो आप >> को if में लपेट सकते हैं:

if (!(cin >> lol)) {
    cout << "You entered some stupid input" << endl;
}

इसके अलावा, आप इसे पढ़ने से पहले lol को असाइन करना चाह सकते हैं ताकि यदि पठन विफल हो जाए, तब भी इसका कुछ स्वीकार्य मान हो (और उपयोग करने के लिए UB नहीं है):

int lol = -1; // -1 for example

यदि, उदाहरण के लिए, आप तब तक लूप करना चाहते हैं जब तक कि उपयोगकर्ता आपको कुछ मान्य इनपुट न दे, आप कर सकते हैं

int lol = 0;

cout << "enter a number(int): ";

while (!(cin >> lol)) {
    cout << "You entered invalid input." << endl << "enter a number(int): ";
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
}

// the above will loop until the user entered an integer
// and when this point is reached, lol will be the input number
7
Seth Carnegie 4 फरवरी 2012, 21:24
मुझे पता नहीं क्यों, लेकिन यह अभी भी यादृच्छिक संख्या को काटता है जब मैं कुछ ऐसा इनपुट करता हूं जो संख्या नहीं है, यह क्यों है?
 – 
user1189494
4 फरवरी 2012, 21:03
उदाहरण के लिए ऊपर दिए गए मेरे उत्तर में अद्यतन देखें।
 – 
Seth Carnegie
4 फरवरी 2012, 21:07
अगर मैं कुछ ऐसा कहता हूं जिससे आपको ठेस पहुंचे तो मैं अपमानजनक और खेद प्रकट नहीं करना चाहता (मैं उतना वाक्पटु नहीं हूं जितना आप देखते हैं)। मैं वास्तव में आपको नहीं समझ सकता। मुझे एक समाधान मिला कि मुझे नहीं पता कि कोड की शुरुआत में क्या करना है, मैं एक स्ट्रिंग सेट कर सकता हूं और फिर जांच सकता हूं कि इनपुट में अक्षर हैं, अगर ऐसा होता है तो यह स्ट्रिंग को प्रिंट करेगा, अगर ऐसा नहीं है तो यह वास्तविक int प्रिंट करेगा।
 – 
user1189494
4 फरवरी 2012, 21:10
क्या आपने मेरा उदाहरण आजमाया?
 – 
Seth Carnegie
4 फरवरी 2012, 21:12