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

Detect non alphabetic characters in a mixed string

本文关键字:字符 混合 字符串 检测      更新时间:2023-10-16

我的代码非常简化的版本:

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

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

#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;
}

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