Алгоритмы
- 1 ответ
- 0 вопросов
4
Вклад в тег
funcs = (func_1, func_2, func_3)
funcs[1]("аргументы")
Competition::initCat()
Вы используете getline()
, который принимает весь буфер ввода.choice
, Вы набираете "1" и перевод строки. В то время как "1" переходит из буфера в переменную choice, в буфере остаётся '\n' (символ перевода строки). Именно этот символ принимает функция getline(cin, breed)
.cin.ignore()
.cin.ignore(1000, '\n')
. Эта функция будет удалять символы из буфера до тех пор пока не встретит символ перевода строки, или пока не удалит 1000 символов. Однако этот способ не сработает если пользователь введёт число + 1000 пробелов + '\n', так как в таком случае символ перевода не удалится. cin.ignore(1000, '\n')
, лучше использовать cin.ignore(numeric_limits::max(), '\n'). Этот вариант точно очистит всю строку вместе с '\n', но для его использования нужно подключить библиотеку:#include <limits>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>