В этой программе вводятся две переменные (на этот раз в виде отдельных операторов). Мы запустим эту программу дважды.
Запуск #1: Когда встретится std::cin >> x;
программа будет ждать ввода. Введите значение 4
и нажмите Enter. Ввод 4\n
попадает в буфер ввода, а значение 4
извлекается в переменную x
.
Когда встретится std::cin >> y;
, программа снова будет ждать ввода. Введите значение 5
и нажмите Enter. Ввод 5\n
попадает в буфер ввода, а значение 5
извлекается в переменную y
. Наконец, программа выведет You entered 4 and 5.
Запуск #2: Когда встречается std::cin >> x
программа ждет ввода. Введите 4 5
и нажмите Enter. Ввод 4 5\n
поступает в буфер ввода, но только 4
извлекается в переменную x
(извлечение останавливается на пробеле).
Когда встречается std::cin >> y
программа не будет ждать ввода. Вместо этого 5
, которая все еще находится в буфере ввода, извлекается в переменную y
. Затем программа печатает You entered 4 and 5.
Обратите внимание, что в "Запуске #2" программа не ждала, пока пользователь введет дополнительный ввод при извлечении в переменную y
, поскольку в буфере ввода уже был предыдущий ввод, который мог быть использован.
Ключевой момент
std::cin
является буферизованным, потому что он позволяет нам отделить ввод данных от их извлечения. Мы можем ввести данные один раз, а затем выполнить несколько запросов на их извлечение.