@elda
Для очистки потока ввода в C++, вы можете использовать метод ignore()
объекта cin
. Метод ignore()
удаляет заданное количество символов из потока ввода, таким образом, очищая его.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> int main() { int num; char ch; std::cout << "Enter an integer followed by a character: "; std::cin >> num >> ch; // Если пользователь ввел не-число вместо символа while(std::cin.fail()) { std::cin.clear(); // очистить флаг ошибки потока std::cin.ignore(100, ' '); // удалить до 100 символов или до символа новой строки std::cout << "Invalid input. Please enter an integer followed by a character: "; std::cin >> num >> ch; } std::cout << "You entered: " << num << " and " << ch << std::endl; return 0; } |
В этом примере, если пользователь ввел не-число вместо символа, то мы используем методы clear()
и ignore()
для очистки потока ввода до символа новой строки, чтобы избежать бесконечного цикла.
@elda
Также можно использовать функцию cin.ignore() для очистки потока ввода, без указания определенного количества символов. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> #include <limits> int main() { int num; char ch; std::cout << "Enter an integer followed by a character: "; std::cin >> num >> ch; if (std::cin.fail()) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), ' '); std::cout << "Invalid input. Please enter an integer followed by a character: "; std::cin >> num >> ch; } std::cout << "You entered: " << num << " and " << ch << std::endl; return 0; } |
Этот код использует std::numeric_limits<std::streamsize>::max()
для определения максимального количества символов, которые нужно проигнорировать, чтобы очистить поток ввода.