Как проверить, если пользовательский ввод более одной буквы и правильно ли он отображается в C ++ - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь выяснить, как предотвратить продолжение моего кода, если пользователь ввел более 1 символа.Я пытался просматривать форумы, но я не мог найти правильные ответы, которые я искал.

В основном я пытаюсь проверить, если пользователь ввел более 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

Когда я проверяю его, числовая проверка работает, но когда я набираю более 1 символа для ввода, он заканчивает мой код.Вот что он показывает:

enter image description here

Примечания: firstInitial и lastInitial объявлены в начале моего кода как:

char firstInitial;
char lastInitial;

В настоящее время у меня есть #include iostream и #include ctype.h, и я использую // using namespace std; //, чтобы убрать использование std :: в моем коде.Если об этом специально спросили, прошу прощения;и, пожалуйста, пришлите мне ссылку на ответ!Если мой код может быть более эффективным, пожалуйста, дайте мне знать об этом!Спасибо.

1 Ответ

1 голос
/ 09 марта 2019

toupper возвращает целое число, и вам необходимо преобразовать его в символ при печати. Как это:

static_cast<char>(toupper(lastInitial))
...