Задача: Не выйдет из цикла.Подтверждение пароля - пробелы
Я проверил миллион сайтов и не могу понять, как это реализовать. Этот цикл не будет выходить из-за getline(). Нужен ли мне cin.ignore() или cin.clear()? Я не могу заставить его работать после попытки каждого вывода. Пожалуйста, помогите ..
while (strlen(u.username) < 6 || strlen(u.username) > 18||got_space==true)
{
got_space = false;
cout << "\nError: Your username must be between 6 and 18 characters long and have no spaces. Please try again. (Press e to exit)\n";
cin >> u.username;
if (strlen(u.username)<2 && tolower(u.username[0]) == 'e')
{
return;
}
cin.getline(u.username, USERNAME_SIZE); // Find whitespaces
for (int c = 0; c < strlen(u.username); c++) // Check for spaces
{
if (isspace(u.username[c]))
{
got_space = true;
}
}
}
Использование станд :: строка. Во-первых, если вы обрабатываете пароли, вам, вероятно, нужен защищенный код. Труднее сделать ошибку, такую как переполнение буфера со строками. –
Мне также интересно, какое значение вводит «e» в качестве имени пользователя. –
Что такое std :: anything, потому что я вижу его для множества решений в Интернете, но мой учитель сказал, что не используйте его прямо сейчас, по крайней мере до тех пор, пока мне не станет лучше в кодировании C++ .. ?? – Donald