2012-05-08 67 views
0

我的代碼非常簡化的版本:檢測非字母字符的字符串混合

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
string name; 

cout << "Enter first and last name" << endl; 
getline(cin, name); 

return 0; 
} 

正如你可以看到我想我的用戶輸入他們的名字和姓氏,其中將包括空格。我想檢查它的數字字符,如果有輸入,拋出一個錯誤。示例輸入可能是:「J0hn Sm1th」,當然會顯示錯誤。

我知道我將不得不使用isAlpha(),我可以讓它工作,如果只是數字或如果只是字母輸入,但不是當他們合併。

+3

遍歷並檢查'!isalpha()'。 – chris

回答

0
#include <cstddef> 
#include <string> 

bool check_name(const string& str) 
{ 
    for (std::size_t i = 0; i < str.size(); ++i) 
     if (!((str[i]>='a' && str[i]<='z') || 
       (str[i]>='A' && str[i]<='Z') || 
       str[i]==' ' || str[i]=='-')) 
     return false; 
    return true; 
} 
+0

這個工作幾乎完美!如果它檢測到多個錯誤,則會拋出錯誤消息,顯示每個不正確的字符。如何解決此問題?忽略這個,我修好了! – blanksby

+1

如果你這樣做:'if(!check_name(name))cout <<「error \ n」;'它只會拋出一次消息(如果檢測到不正確的字符)。 – miloszmaki

10

如果您有C++ 11,請使用std::all_of(name.begin(), name.end(), isalpha)

+1

我甚至不知道存在。一些新的嘗試,謝謝:) – chris

+0

+1打我發貼吧! – AJG85

+0

雖然 – SirGuy

相關問題