Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
proont
1 / 1 / 1
Регистрация: 15.11.2014
Сообщений: 79
#1

Что такое поток (stream)? - C++

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

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

При запуске выдает expression stream !=null; что делать? C++
C++ Код не работает,говорит,что не знает,что такое delay(100).в чём проблема?как сделать,чтоб программа заработала?
Вот интересно: Что же такое поток? C++
C++ что такое поток?
C++ Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала
Что такое перегрузка оператора? Что у меня в коде за ошибка? C++
В этой части кода происходит объявление функций? Что такое void? Что в скобках? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lss
921 / 851 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
12.07.2015, 22:16     Что такое поток (stream)? #2
Цитата Сообщение от proont Посмотреть сообщение
Но что представляет из себя этот поток? Что это такое?
Учебники пересказывать, или может быть сам почитаешь?
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,079
Завершенные тесты: 2
12.07.2015, 22:24     Что такое поток (stream)? #3
Это поток ввода-вывода. Класс Stream - последовательность байтов.
proont
1 / 1 / 1
Регистрация: 15.11.2014
Сообщений: 79
12.07.2015, 22:28  [ТС]     Что такое поток (stream)? #4
lss, читал в нескольких учебниках, не понятно.
lss
921 / 851 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
12.07.2015, 22:33     Что такое поток (stream)? #5
Цитата Сообщение от proont Посмотреть сообщение
не понятно.
Цитату из прочитанного, и что в ней конкретно непонятно.
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,079
Завершенные тесты: 2
12.07.2015, 22:36     Что такое поток (stream)? #6
Цитата Сообщение от proont Посмотреть сообщение
читал в нескольких учебниках, не понятно.
Так нам, что на детских картиночках тебе показать ?
Max Dark
шКодер самоучка
1657 / 1458 / 527
Регистрация: 09.10.2013
Сообщений: 3,316
Записей в блоге: 8
Завершенные тесты: 2
12.07.2015, 22:43     Что такое поток (stream)? #7
потоки ввода вывода это по аналогии с чем то текущим в одну сторону: вода из крана - поток ввода, слив в унитазе раковине - поток вывода.
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,079
Завершенные тесты: 2
12.07.2015, 22:44     Что такое поток (stream)? #8
Цитата Сообщение от Cra3y Посмотреть сообщение
потоки ввода вывода это по аналогии с чем то текущим в одну сторону: вода из крана - поток ввода, слив в унитазе раковине - поток вывода.
Скорее наоборот
Evg
Эксперт CАвтор FAQ
17387 / 5625 / 351
Регистрация: 30.03.2009
Сообщений: 15,407
Записей в блоге: 26
12.07.2015, 23:16     Что такое поток (stream)? #9
заморочки функций fseek и fwrite

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

Добавлено через 4 минуты
Файловый дескриптор не обязательно ассоциирован с файлом. Это может быть произвольное устройство, в том числе и консоль. Обычный printf по сути дела говорит операционной системе записать такой-то текст в файловый дескриптор номер N, не заморачиваясь вопросами, а чем же в реальности является файловый дескриптор (консолью, файлом на диске, или чем-то ещё)
Renji
1793 / 1211 / 282
Регистрация: 05.06.2014
Сообщений: 3,480
13.07.2015, 00:37     Что такое поток (stream)? #10
Цитата Сообщение от proont Посмотреть сообщение
Везде написано про какой-то поток. Но что представляет из себя этот поток? Что это такое?
Последовательность байт которую можно читать сначала (извлекать данные из потока) или дописать чего ни будь в конец (поместить данные в поток). Причем, все прочитанное считается из этого потока пропавшим (если у него нет дополнительных свистелок и перделок для промотки вперед-назад). << и >> могут эти данные дополнительно преобразовывать (пихаешь в них число, они в поток кидают текст). А уж что там с дописанными в конец данными происходит, откуда они в начале потока берутся, пользователя потока абсолютно не колышит.
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
13.07.2015, 09:31     Что такое поток (stream)? #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от proont Посмотреть сообщение
что представляет из себя этот поток?
Как можно представить себе поток?
Ilot
Модератор
Эксперт С++
1785 / 1160 / 225
Регистрация: 16.05.2013
Сообщений: 3,056
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 10:06     Что такое поток (stream)? #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от lss Посмотреть сообщение
Учебники пересказывать, или может быть сам почитаешь?
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Так нам, что на детских картиночках тебе показать ?
Потоки устроены довольно сложно. На картинках явно всего не объяснишь.

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

Остановлюсь только на том на что в книгах не делают акцент.
Если в двух словах, то в ОС есть функции вывода в консоль и в файлы (WriteFile/ReadFile для файлов и WriteConsole/ReadConsole для консоли). Так вот библиотека потоков в С++ это всего лишь обертка над этими функциями, позволяющая удобно выводить и читать информацию. Если вы внимательно изучите структуры потоков то увидите, что они всего лишь выполняют форматирование, а выводом/чтением занимаются буфферы.
Опять же подробнее у Джосатисса.
lss
921 / 851 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
13.07.2015, 10:25     Что такое поток (stream)? #13
Цитата Сообщение от Ilot Посмотреть сообщение
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
И что с того? Ты, сам, на форуме узнавал, что это такое и как работает?
Ilot
Модератор
Эксперт С++
1785 / 1160 / 225
Регистрация: 16.05.2013
Сообщений: 3,056
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 10:56     Что такое поток (stream)? #14
Цитата Сообщение от lss Посмотреть сообщение
Ты, сам, на форуме узнавал, что это такое и как работает?
Нет. Джосатисс + cplusplus.com + разбор исходников компилятора.
hoggy
6152 / 2518 / 442
Регистрация: 15.11.2014
Сообщений: 5,564
Завершенные тесты: 1
13.07.2015, 10:56     Что такое поток (stream)? #15
Цитата Сообщение от Ilot Посмотреть сообщение
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
что значит "нормально" ?

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

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

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

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

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

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

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

Цитата Сообщение от Ilot Посмотреть сообщение
Потоки устроены довольно сложно.
это не принципиально.
вдумайтесь, что нужно новичку:
Цитата Сообщение от proont Посмотреть сообщение
Но что представляет из себя этот поток? Что это такое?
новичку нужно понять смысл самой абстракции.
а не архитектуру/исходный код basic_iostream.
Ilot
Модератор
Эксперт С++
1785 / 1160 / 225
Регистрация: 16.05.2013
Сообщений: 3,056
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 11:17     Что такое поток (stream)? #16
hoggy, когда я не так давно сам разбирался в потоках, то мне более важна была абстракция. Именно этот момент дает ответ на вопрос, что такое потоки. А ответ, как я уже писал выше, простой потоки это обертка над функциями ОС, которая поддерживает форматирование.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2015, 11:26     Что такое поток (stream)?
Еще ссылки по теме:

Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы C++
C++ Что такое хэндлер файла? Что такое файловый указатель?
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них C++
Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере C++
C++ поток (stream)

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

Или воспользуйтесь поиском по форуму:
lss
921 / 851 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
13.07.2015, 11:26     Что такое поток (stream)? #17
Цитата Сообщение от Ilot Посмотреть сообщение
Нет. Джосатисс + cplusplus.com + разбор исходников компилятора.
Правильно, что я и ТС советую: читай учебники, думай, разбирай коды, пиши свои, т.е. - осваивай тему, а конкретные непонятности можно и здесь выяснять.
Yandex
Объявления
13.07.2015, 11:26     Что такое поток (stream)?
Ответ Создать тему
Опции темы

Текущее время: 09:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru