Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
proont
1 / 1 / 1
Регистрация: 15.11.2014
Сообщений: 79
#1

Что такое поток (stream)?

12.07.2015, 22:13. Просмотров 1635. Ответов 16
Метки нет (Все метки)

"Сin" это объект стандартного входного потока. Операция "<<" - это операция передачи в поток. Операнд стоящий справа от операции ">>" помещается во входной поток.
Везде написано про какой-то поток. Но что представляет из себя этот поток? Что это такое?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2015, 22:13
Ответы с готовыми решениями:

что такое поток?
что такое потоки ?

Вот интересно: Что же такое поток?
Мы часто используем cout&lt;&lt;;cin&gt;&gt;;scanf();printf(); но Себя впоймал на мысле,...

поток (stream)
расскажите подробно про работу потока

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с...

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

16
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
12.07.2015, 22:16 #2
Цитата Сообщение от proont Посмотреть сообщение
Но что представляет из себя этот поток? Что это такое?
Учебники пересказывать, или может быть сам почитаешь?
0
Sn1p3rOk
281 / 168 / 85
Регистрация: 19.04.2014
Сообщений: 1,098
Завершенные тесты: 2
12.07.2015, 22:24 #3
Это поток ввода-вывода. Класс Stream - последовательность байтов.
0
proont
1 / 1 / 1
Регистрация: 15.11.2014
Сообщений: 79
12.07.2015, 22:28  [ТС] #4
lss, читал в нескольких учебниках, не понятно.
0
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
12.07.2015, 22:33 #5
Цитата Сообщение от proont Посмотреть сообщение
не понятно.
Цитату из прочитанного, и что в ней конкретно непонятно.
0
Sn1p3rOk
281 / 168 / 85
Регистрация: 19.04.2014
Сообщений: 1,098
Завершенные тесты: 2
12.07.2015, 22:36 #6
Цитата Сообщение от proont Посмотреть сообщение
читал в нескольких учебниках, не понятно.
Так нам, что на детских картиночках тебе показать ?
0
Max Dark
шКодер самоучка
1945 / 1738 / 857
Регистрация: 09.10.2013
Сообщений: 3,846
Записей в блоге: 6
Завершенные тесты: 2
12.07.2015, 22:43 #7
потоки ввода вывода это по аналогии с чем то текущим в одну сторону: вода из крана - поток ввода, слив в унитазе раковине - поток вывода.
0
Sn1p3rOk
281 / 168 / 85
Регистрация: 19.04.2014
Сообщений: 1,098
Завершенные тесты: 2
12.07.2015, 22:44 #8
Цитата Сообщение от Cra3y Посмотреть сообщение
потоки ввода вывода это по аналогии с чем то текущим в одну сторону: вода из крана - поток ввода, слив в унитазе раковине - поток вывода.
Скорее наоборот
0
Evg
Эксперт CАвтор FAQ
19280 / 7136 / 529
Регистрация: 30.03.2009
Сообщений: 19,983
Записей в блоге: 30
12.07.2015, 23:16 #9
заморочки функций fseek и fwrite

То, что идёт ещё ниже - это уже ОС. Т.е. ОС выдаёт пользовательскому приложению некую чиселку (которая хранится внутри struct FILE или class iostream), и при помощи этой чиселки пользовательская программа обращается к ОС. А внутри себя ОС уже имеет таблицы, какому файлу на диске соответствует чиселка, переводит эти понятия в номер сектора на диске и т.п.

Добавлено через 4 минуты
Файловый дескриптор не обязательно ассоциирован с файлом. Это может быть произвольное устройство, в том числе и консоль. Обычный printf по сути дела говорит операционной системе записать такой-то текст в файловый дескриптор номер N, не заморачиваясь вопросами, а чем же в реальности является файловый дескриптор (консолью, файлом на диске, или чем-то ещё)
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,473
13.07.2015, 00:37 #10
Цитата Сообщение от proont Посмотреть сообщение
Везде написано про какой-то поток. Но что представляет из себя этот поток? Что это такое?
Последовательность байт которую можно читать сначала (извлекать данные из потока) или дописать чего ни будь в конец (поместить данные в поток). Причем, все прочитанное считается из этого потока пропавшим (если у него нет дополнительных свистелок и перделок для промотки вперед-назад). << и >> могут эти данные дополнительно преобразовывать (пихаешь в них число, они в поток кидают текст). А уж что там с дописанными в конец данными происходит, откуда они в начале потока берутся, пользователя потока абсолютно не колышит.
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
13.07.2015, 09:31 #11
Лучший ответ Сообщение было отмечено proont как решение

Решение

Цитата Сообщение от proont Посмотреть сообщение
что представляет из себя этот поток?
Как можно представить себе поток?
1
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 10:06 #12
Лучший ответ Сообщение было отмечено proont как решение

Решение

Цитата Сообщение от lss Посмотреть сообщение
Учебники пересказывать, или может быть сам почитаешь?
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Так нам, что на детских картиночках тебе показать ?
Потоки устроены довольно сложно. На картинках явно всего не объяснишь.

Теперь к ТС. Когда вы разбиретесь в принципах работы потоков можете считать себя экспертом С++, а для начала стоит почитать Джосатисса в особенности второе издание.

Остановлюсь только на том на что в книгах не делают акцент.
Если в двух словах, то в ОС есть функции вывода в консоль и в файлы (WriteFile/ReadFile для файлов и WriteConsole/ReadConsole для консоли). Так вот библиотека потоков в С++ это всего лишь обертка над этими функциями, позволяющая удобно выводить и читать информацию. Если вы внимательно изучите структуры потоков то увидите, что они всего лишь выполняют форматирование, а выводом/чтением занимаются буфферы.
Опять же подробнее у Джосатисса.
1
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
13.07.2015, 10:25 #13
Цитата Сообщение от Ilot Посмотреть сообщение
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
И что с того? Ты, сам, на форуме узнавал, что это такое и как работает?
0
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 10:56 #14
Цитата Сообщение от lss Посмотреть сообщение
Ты, сам, на форуме узнавал, что это такое и как работает?
Нет. Джосатисс + cplusplus.com + разбор исходников компилятора.
0
hoggy
Нарушитель
Эксперт С++
7051 / 3097 / 643
Регистрация: 15.11.2014
Сообщений: 7,056
Завершенные тесты: 1
13.07.2015, 10:56 #15
Цитата Сообщение от Ilot Посмотреть сообщение
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
что значит "нормально" ?

нормально для новичка - это понять саму концепцию.

во многих книжках встречается абстракция "труба".

std::cin - это конец трубы,
который торчит в нашем приложении.
и мы можем закидывать в трубу данные.

C++
1
std::cin << "hello\n"; // полетели байтики-символы в трубу
другой конец может быть связан с каким то другим процессом.
например, с консольным терминалом.

он получает наши байтики,
и выводит в консольном окошке наши символы.

для того, что бы понять концепцию, и начать пользоваться потоками,
не нужны какие то особенные подробности о технических деталях.

и такая концепция дается в любом букваре для самых маленьких.

Цитата Сообщение от Ilot Посмотреть сообщение
Потоки устроены довольно сложно.
это не принципиально.
вдумайтесь, что нужно новичку:
Цитата Сообщение от proont Посмотреть сообщение
Но что представляет из себя этот поток? Что это такое?
новичку нужно понять смысл самой абстракции.
а не архитектуру/исходный код basic_iostream.
1
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 11:17 #16
hoggy, когда я не так давно сам разбирался в потоках, то мне более важна была абстракция. Именно этот момент дает ответ на вопрос, что такое потоки. А ответ, как я уже писал выше, простой потоки это обертка над функциями ОС, которая поддерживает форматирование.
0
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
13.07.2015, 11:26 #17
Цитата Сообщение от Ilot Посмотреть сообщение
Нет. Джосатисс + cplusplus.com + разбор исходников компилятора.
Правильно, что я и ТС советую: читай учебники, думай, разбирай коды, пиши свои, т.е. - осваивай тему, а конкретные непонятности можно и здесь выяснять.
0
13.07.2015, 11:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2015, 11:26

Что такое хэндлер файла? Что такое файловый указатель?
Что такое хэндлер файла? Что такое файловый указатель?

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите ...

При запуске выдает expression stream !=null; что делать?
задача такая: написать прогу, которая будет решать систему линейных уравнений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru