我的代码的简化版本:
#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(),如果仅输入数字或输入字母,我可以使用它,但是当它们合并时却不能。
答案 0 :(得分:10)
如果你有C ++ 11,请使用std::all_of(name.begin(), name.end(), isalpha)
。
答案 1 :(得分: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;
}
答案 2 :(得分:0)
您可以检查小写和大写值是否相同,对于非字母字符,它们将相同