Вы получаете это поведение из-за использования cin >> n
как условного. Во время первого выполнения l oop он продолжает возвращать cin (который является экземпляром std :: istream), который является допустимым ненулевым указателем. Но когда вы нажимаете ctrl-z, основной поток становится недействительным и начинает возвращать nullptr. Следовательно, cin>>n
в секунду l oop оценивается как ложное, а l oop не выполняется. Затем вы устанавливаете диапазон равным размеру вектора b, который равен нулю, поэтому третье значение l oop не выполняется.
Проверьте эту ссылку на стек-поток для получения дополнительной информации об использовании cin в качестве условного if (cin >> x) - Почему вы можете использовать это условие?
Если вы хотите использовать cin в качестве условного выражения для l oop, разбейте l oop на основе таких условий, как n == SomeSpecificEndValue
, а не ctrl -z