Проблема, с которой я столкнулся, заключается в том, что если вы введете какую-либо строку, то cin назначит int равным 0. Интересным выводом является то, что если вы позже возьмете cin в строку, вы получите всю строку, вставленную для int,cin.fail () всегда возвращает true по какой-то причине, даже с cin.ignore () и т. д., а if (cin >> начальная позиция) также всегда возвращает true.Итак, как мне заставить его поймать даже признать, что это строка, а не int?Как, как мне сделать это снова цикл, если это строка?
int getUserPosition(bool volatileCall = false) {
cout << "Which slot do you want to drop the chip in (0-8)? " << endl;
int startingPosition;
cin >> startingPosition;
while (startingPosition >= WIDTH || startingPosition < 0) {
cout << "Invalid slot." << endl << endl;
if (volatileCall) {
return -1;
}
cout << "Which slot do you want to drop the chip in (0-8)? " << endl;
cin >> startingPosition;
cout << startingPosition << endl;
}
return startingPosition;
}