所以我想驗證用戶只輸入文本而不輸入數字。如果輸入了任何數字,我再次要求她輸入。我認爲這會做的伎倆,但它似乎並沒有工作:驗證輸入和getline()函數
#include <iostream>
using namespace std;
int main()
{
string name = "";
cout << "Enter name: ";
getline(cin, name);
while (!cin) // or cin.fail()
{
cout << "Numbers are not allowed, input name again: ";
cin.clear();
cin.ignore(1000, '\n'); // is this even necessary since getline() already consumes spaces and new lines?
getline(cin, name);
}
}
因爲name
變量是string
型的,當它接收到一個號碼,不應該cin
對象失敗?我怎樣才能驗證它,並確保在輸入號碼時再次提示輸入?另外,出於好奇,因爲我已經問過了,如果用戶輸入如下內容:Scarlett9356,重新提示輸入的好方法是什麼?謝謝。
你可以從輸入流中讀取「1234」作爲數字或字符串:它只是一串字符 – BeyelerStudios
這裏真正困難的事情是大局。什麼*是一個人的有效名字?它比人們想象的要複雜得多:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/當然,對於玩具程序來說,通常足以確保它只包含Aa-Zz和空格。 –
很棒的閱讀,感謝分享! @ChristianHackl – Blueshift