簡體   English   中英

我們如何才能輸入數字直到輸入字母?

[英]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;

我想從用戶輸入中獲取數字,直到用戶輸入一個字母。

此后我想接受另一個用戶輸入。 我的輸出工作正常。 所以當我輸入一個字母時,它會停止。 但它不要求第二個輸入。 我怎樣才能解決這個問題?

當設置cin失敗錯誤標志時,您需要清除它們。

此外,您需要清除stdin緩沖區,該緩沖區將包含前一個cin中未解析的任何字符。

//...
std::cin.clear(); //clear flags
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //clear buffer
//...
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM