【发布时间】:2021-09-24 23:50:45
【问题描述】:
我正在为银行系统做一个课堂项目。其中一项任务是确保用户在输入姓名时不输入数字字符,反之亦然,在输入出生日期和/或电话号码时。
我正在使用 char 数组来获取名字和姓氏,但我想检查用户输入以查找他们是否不小心输入了数字,例如:
- 杰森(接受)
- j3son(拒绝)
cout << "*************************" << endl;
cout << "Please enter your first name: ";
cin.getline(nameFirst, 20);
cout << endl;
这会提示用户输入名字。我想把它发送给一个函数
bool checkName();
我想有某种循环来检查数组的所有元素(nameFirst),看看是否放置了一个数值。如果是这样。然后返回一些东西并使用该返回值来确定用户是否输入了无效条目。
我被难住了。我找不到任何类似的东西。我发现的所有内容都仅适用于 ints,但没有什么可以将 int 与 char 进行比较。
【问题讨论】:
-
std::isdigit和一个循环。如果您喜欢冒险,可以将循环替换为std::none_of。 -
您是否还要检查名称的第一个字符是否为大写?
-
请展开代码以显示您的
nameFirst声明! -
"我找到的所有东西都只适用于
ints。" -- 你指的是例如isdigit采用int参数?这是一个古老的“hack”,因此该函数也可以满足EOF的传递。您将要检查的字符转换为unsigned char,然后再将其传递给isdigit。 -- 另外,不要使用 char 数组。使用std::string nameFirst和std::getline( std::cin, nameFirst )...