【问题标题】:Checking if user input is alphabetic检查用户输入是否是字母
【发布时间】:2016-06-01 11:44:27
【问题描述】:

我不知道如何检查用户的输入是否是字母。我希望程序:

  1. 读取用户输入
  2. 检查是否是字母
  3. 再次输出名称

我尝试使用isdigitisalpha,但无法正常工作。

//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

标签: c++ input char alphabetic


【解决方案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);
    }
}

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2013-08-05
    • 2016-03-22
    • 1970-01-01
    相关资源
    最近更新 更多