检测混合字符串中的非字母字符

时间:2012-05-08 20:28:35

标签: c++

我的代码的简化版本:

#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 个答案:

答案 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)

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