检查用户输入是不是是字母
Posted
技术标签:
【中文标题】检查用户输入是不是是字母【英文标题】:Checking if user input is alphabetic检查用户输入是否是字母 【发布时间】:2016-06-01 11:44:27 【问题描述】:我不知道如何检查用户的输入是否是字母。我希望程序:
-
读取用户输入
检查是否是字母
再次输出名称
我尝试使用isdigit
和isalpha
,但无法正常工作。
//checking if name is valid and not a number
int nameCheck(char enteredName)
//if the name is alphabetic
/* return and output it */
//else
/* let the user enter it again */
//user enters the name
int nameEntering()
cout << "please enter your Name.\n";
char enteredName;
cin >> enteredName;
nameCheck(enteredName);
return 0;
int main()
char enteredName;
enteredName = nameEntering();
cout << "Have a nice day " << enteredName << "!\n";
return 0;
这是我的旧解决方案,根本不起作用。我在另一个网站上找到了它并将其用作“模板”。
int nameCheck(char enteredName)
int i = 0;
char str[] = enteredName;
while (str[i])
if (isalpha(str[i])) printf("character %c is alphabetic\n", str[i]);
else
cout << "Enter your name again without using numbers or other special characters, please!\n";
nameEntering();
i++;
return enteredName;
【问题讨论】:
您需要对“名称输入”部分进行循环,具体取决于 nameCheck(使用返回类型 bool)函数的输出。在伪代码中类似于while(!nameCheck(name)) name = promptName()
。
名称是collection of words
。因此,请使用std::string
而不是char
。此外,如果您希望在名称中使用 space
,请使用 getline()
。
对不起,我说过我是新来的,第一次积极使用这个网站。
我将旧解决方案添加到帖子@Andrew
【参考方案1】:
我找到了解决办法。
//user enters the name
void nameEntering()
cout << "please enter your Name.\n";
string enteredName;
cin >> enteredName;
//checking if name is valid and not a number
if (find_if(enteredName.begin(), enteredName.end(), isdigit) !=enteredName.end())
system("cls");
cout << "please don't enter numbers or other special characters.\n";
cout << "\n";
nameEntering();
//if valid it outputs name
else
coutput(enteredName);
【讨论】:
以上是关于检查用户输入是不是是字母的主要内容,如果未能解决你的问题,请参考以下文章
用于检查 char 数组是不是包含 Java 中用户给定字母的 if 语句
检查用户名是不是有来自名称的 4 个连续字母 - javascript