clear
पर कॉल करने के बाद, आपको किसी भी तरह से स्ट्रीम से अमान्य इनपुट को हटाना होगा। यहाँ एक तरीका है:
cin >> arr[index];
if (!cin)
{
cin.clear();
std::string ignoreLine; //read the invalid input into it
std::getline(cin, ignoreLine); //read the line till next space
index--;
continue;
}
क्योंकि जब cin
अमान्य इनपुट को पढ़ने के लिए विफल रहता है, यह धारा में रहता है यह। इसे कुछ तरीकों से हटा दिया जाना है। मैंने बस इसे पढ़ा और अनदेखा किया।
तुम भी उपयोग कर सकते हैं ignore
के रूप में:
cin.clear();
cin.ignore(std::numeric_limits<streamsize>::max(),' ');
जो बेहतर है में मेरी राय प्रदान की आदानों अंतरिक्ष विभाजित होते हैं (और यदि आप नहीं करना चाहती निरीक्षण अमान्य इनपुट)। online doc का कहना है:
IStream :: उपेक्षा
IStream & उपेक्षा (streamsize n = 1, पूर्णांक परिसीमक = EOF);
निकालें और त्यागने वर्ण इनपुट अनुक्रम से
अर्क पात्रों और उन्हें छोड़ देता है।
निष्कर्षण समाप्त होता है जब एन वर्ण निकाले जाते हैं और त्याग दिया जाता है या जब चरित्र डिलीम पाया जाता है, जो भी पहले आता है। बाद के मामले में, डेलीम चरित्र भी निकाला जाता है।
इसलिए अनंत लूप !! –
@ श्री डीडीडी: बिल्कुल। :-) – Nawaz
@ श्री डीडीडी: आपके द्वारा प्रदान किए जाने वाले अमान्य इनपुट में क्या? – Nawaz