Я пытаюсь понять, как предотвратить продолжение моего кода, если пользователь ввел более 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 символа для ввода, мой код завершается. Вот что он показывает:
Примечания: firstInitial и lastInitial объявлены в начале моего кода как:
char firstInitial;
char lastInitial;
В настоящее время у меня есть #include iostream и #include ctype.h, и я использую //using namespace std;//, чтобы удалить использование std:: в моем коде. Если это было специально задано, я извиняюсь; и, пожалуйста, пришлите мне ссылку на ответ! Если мой код может быть более эффективным, сообщите мне об этом! Спасибо.
std::string
сstd::getline()
, чтобы длина ввода не повредила. После этого вы можете оценить длину. Если это 0 => ОШИБКА! Повторите еще раз. Если это 1 =>, просто возьмите начало строки как символ. В противном случае (› 1) вы можете сделать то же самое и сделать дополнительно ПРЕДУПРЕЖДЕНИЕ! Пожалуйста, внимательно рассмотрите то, что было запрошено. - person Scheff's Cat   schedule 09.03.2019using namespace std
можно смешивать с явной областью действияstd::
: Демонстрация Life on coliru а>. Однако я рекомендую полностью отказаться отusing namespace std;
, по крайней мере, в глобальном масштабе. Хотя это кажется удобным, это приводит к тому, что всеnamespace std
втягивается в глобальное пространство имен, что может иметь неожиданные или незамеченные и непреднамеренные побочные эффекты. - person Scheff's Cat   schedule 10.03.2019