如何检查用户输入是否超过一个字母并用C ++正确显示

时间:2019-03-09 05:57:43

标签: c++ validation character user-input letter

我正在尝试弄清楚如果用户输入的字符数超过1个,如何防止代码继续执行。我尝试浏览各个论坛,但找不到所需的正确答案。

基本上,我正在尝试验证用户是否输入了多个字符,并提示他们再次输入。

用户输入也将被打印出来,并且由于某种原因它会打印为数字。这是我当前代码的示例:

        //gets student's last initial. Checks if the input is a 1 letter character
        //has a response if it is not
        bool lastEntry = false;
        while (lastEntry != true){
            cout << "Please enter the initial of your last name: " << endl;
            cin >> lastInitial;

            if (isalpha(lastInitial)) {
                cout << "Last initial has been logged." << endl;
                lastEntry = true;
            } 
            else {
                cout << "That is an invalid choice. Please enter a letter: " << endl;
                cin >> lastInitial;
            }//end if
        }//end while loop

        //prints summary of student's input and displays output
        cout << "Your name initials are: " << toupper(firstInitial) << toupper(lastInitial) << endl;
        cout << "Once swapped, your name initials will be: " << toupper(lastInitial) << toupper(firstInitial) << endl;
    }//end Choice A option

当我测试它时,数字验证有效,但是当我输入多个字符时,它将完成我的代码。它显示了以下内容:

enter image description here

注意: 在我的代码开头将firstInitial和lastInitial声明为:

char firstInitial;
char lastInitial;

我目前拥有#include iostream和#include ctype.h,并且使用//使用命名空间std; //来删除代码中std ::的用法。如果明确要求,我深表歉意。并给我发送答案的链接!如果我的代码可能更有效,请也​​告诉我!谢谢。

1 个答案:

答案 0 :(得分:1)

toupper返回一个整数,打印时需要将其转换为char。像这样:

static_cast<char>(toupper(lastInitial))