Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / operator >> / 5 сообщений из 5, страница 1 из 1
28.02.2016, 15:49
    #39180820
.NET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
operator >>
Почему так странно работает оператор >> для потоков ввода?
Он считывает значение в переменную до первого пробельного символа,
но выполнение оператора заканчивается (начинает выполнятся следующая строка программы)
только если ввести перевод строки, ввод пробела не завершает операцию. Почему?
...
Рейтинг: 0 / 0
28.02.2016, 16:35
    #39180834
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
operator >>
Потому что внизу лежит старый добрый gets. А ещё ниже - системное API, которое позволяет
редактировать вводимую строку .
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.02.2016, 16:42
    #39180836
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
operator >>
Dimitry SibiryakovПотому что внизу лежит старый добрый gets. А ещё ниже - системное API, которое позволяет
редактировать вводимую строку .
Не совсем gets.
Потоки читают системным вызовом read(). А дальше - таки да, ОС буферизирует ввод построчно для интерактивных консолей.
Т.е. С++ тут вообще не причем.
...
Рейтинг: 0 / 0
28.02.2016, 17:29
    #39180857
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
operator >>
.NETПочему так странно работает оператор >> для потоков ввода?
Он считывает значение в переменную до первого пробельного символа,
но выполнение оператора заканчивается (начинает выполнятся следующая строка программы)
только если ввести перевод строки, ввод пробела не завершает операцию. Почему?

Ну, это вопрос вообще риторический.
Потому что надо как-то обозначать окончание ввода и клавиша "Enter" -- не самый плохой способ это сделать.
И потому, что вообще-то пока ты не нажмёшь Enter, программа вообще ничего о вводе не знает, потому что ввод буферизирован.
...
Рейтинг: 0 / 0
29.02.2016, 20:44
    #39181908
.NET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
operator >>
MasterZiv.NETПочему так странно работает оператор >> для потоков ввода?
Он считывает значение в переменную до первого пробельного символа,
но выполнение оператора заканчивается (начинает выполнятся следующая строка программы)
только если ввести перевод строки, ввод пробела не завершает операцию. Почему?

Ну, это вопрос вообще риторический.
Потому что надо как-то обозначать окончание ввода и клавиша "Enter" -- не самый плохой способ это сделать.
И потому, что вообще-то пока ты не нажмёшь Enter, программа вообще ничего о вводе не знает, потому что ввод буферизирован.
А если отключить буферизацию с помощью setvbuf?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / operator >> / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]