2014-03-03 142 views
0

我正在爲項目輸入字符串,如名稱和密碼。我試圖通過添加一個輸入驗證來證明它,通知用戶只輸入一個單詞。問題是我不知道如何使這種輸入驗證這裏是什麼樣的輸入會是什麼樣子防止字符串輸入空間C++

int main(){ 
    string firstname, lastname, password; 
    cout<<"Enter in your first name:"<<endl; 
    cin>>firstname; 
    cout<<"Now Enter your last name:"<<endl; 
    cin>>lastname; 
    cout<<"Lastly enter a password"<<endl; 
    cin>>password 


    return 0; 



} 

爲例現在,我真的想爲密碼變量輸入驗證這樣用戶就不會嘗試輸入兩個字或更多的密碼。

回答

0

基本上,你不希望密碼有任何空格。因此,在密碼中搜索一個空格;如果找到,請重新輸入。

if (password.find (' ') != string::npos) 
{ 
    cout << "Password cannot have spaces!" << endl; 
} 
0

您可以遍歷password中的字符並檢查其中是否有空格。如果您發現空間(或任何其他無效字符)拒絕密碼。

BOOL is_valid = TRUE; 
for(std::string::iterator chr = password.begin(); chr != password.end(); ++chr) 
{ 
    if (*chr == ' ') 
     // add more conditions here if you'd like.. 
    { 
     // invalidate the password 
     is_valid = FALSE; 
     break; 
    } 
} 

if(!is_valid) 
{ 
    // handle the case when the password is not valid.. 
} 

以上是好的,因爲它給你檢查每個字符,並在每一步檢查多個規則的機會,但如果你真的只希望找到password是否包含空格,那麼你可以使用the find method

BOOL is_valid = (str.find(' ') == std::string::npos);