Есть функция для консольного приложения. Она должна возвращать 's' или 'h', если таковые символы были введены. Если же ввод не соответствует одному из них, то цикл повторяется. Проблема в том, что если было введено больше одного символа и первый символ это 's' или'h', то функция возвращает значение. Как изменить ее так, чтобы при количестве символов больше одного, значение В ЛЮБОМ СЛУЧАЕ не возвращалось?
char getChoice()
{
char choice;
while(choice != 'h' && choice != 's')
{
std::cout << "Hit or Stand?(h/s)...";
std::cin >> choice;
if (std::cin.fail())
{
std::cin.clear();
std::cin.ignore(32767,'\n');
}
std::cin.ignore(32767,'\n');
}
return choice;
}
Возвращать из функции символ в любом случаи нужно. Другое дело, если вы хотите продолжить цикл пока символ не будет одиночным. Если да, то так:
char getChoice()
{
char choice;
std::cout << "Hit or Stand?(h/s)...";
while ((std::cin >> choice && choice != 'h' && choice != 's')
|| std::cin.peek() != '\n')
{
std::cout << "Hit or Stand?(h/s)...";
if (std::cin.fail() )
{
std::cin.clear();
std::cin.ignore(32767, '\n');
}
std::cin.ignore(32767, '\n');
}
return choice;
}
std::cin.peek() выдает следующий символ буффера, но не считывает
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В общем у меня не выходить создать камеру которая бы двигалась по осям x, y, zУвы только по оси z
Почему при создании виджета нужно использовать указатель, а не переменную?
В начале файла dllmaincpp есть такой фрагмент кода: extern "C" HINSTANCE hAppInstance;
Разрабатываю имплементацию очереди задачВ классе содержатся следующие данные: