[英]How can we take numeric input until letters are entered?
cout << "Enter the numbers to be stored (end with a letter): ";
cin >> number;
while(!(cin.fail())){
numbers.push_back(number);
cin >> number;
}
for(int i = 0; i < numbers.size(); i++){
node->insertKey(numbers.at(i));
}
int search;
cout << "Which number do you want to look up? ";
cin >> search;
我想從用戶輸入中獲取數字,直到用戶輸入一個字母。
此后我想接受另一個用戶輸入。 我的輸出工作正常。 所以當我輸入一個字母時,它會停止。 但它不要求第二個輸入。 我怎樣才能解決這個問題?
最好先這樣做:
while (cin >> number)
numbers.push_back(number);
如果他們在任何有效數字之前鍵入一個字符,則上面會留下一個空vector
,而您的原始代碼將一個無意義的數字推送到vector
。
然后,如果他們輸入了一個字母, cin
流將被置於錯誤狀態,並且仍然具有該字符輸入,您將希望擺脫它:
// clear stream errors
cin.clear();
// actually get rid of the line with the character on it...
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
然后,您可以繼續使用 for 循環和流來search
。
我認為這會有所幫助
cout << "Enter the numbers to be stored (end with a letter): ";
cin >> number;
while(cin>>number){
if(((char)number>='a' && (char)number<='z')||((char)number>='A' && (char)number<='Z'))break;
numbers.push_back(number);
cin >> number;
}
for(int i=0; i<numbers.size(); i++){
node->insertKey(numbers.at(i));
}
int search;
cout << "Which number do you want to look up? ";
cin >> search;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.