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() 如果只输入数字或只输入字母,我可以让它工作,但当它们组合在一起时就不行。

4

3 回答 3

11

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

于 2012-05-08T20:32:02.950 回答
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;
}
于 2012-05-08T20:41:31.797 回答
0

您可以检查小写和大写值是否相同,对于非字母字符,它们将相同

于 2020-07-17T07:08:57.500 回答