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

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

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

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

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

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

что такое поток? - C++
что такое потоки ?

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

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

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

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

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

16
lss
921 / 850 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
12.07.2015, 22:16 #2
Цитата Сообщение от proont Посмотреть сообщение
Но что представляет из себя этот поток? Что это такое?
Учебники пересказывать, или может быть сам почитаешь?
0
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,082
Завершенные тесты: 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
921 / 850 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
12.07.2015, 22:33 #5
Цитата Сообщение от proont Посмотреть сообщение
не понятно.
Цитату из прочитанного, и что в ней конкретно непонятно.
0
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,082
Завершенные тесты: 2
12.07.2015, 22:36 #6
Цитата Сообщение от proont Посмотреть сообщение
читал в нескольких учебниках, не понятно.
Так нам, что на детских картиночках тебе показать ?
0
Max Dark
шКодер самоучка
1849 / 1649 / 603
Регистрация: 09.10.2013
Сообщений: 3,676
Записей в блоге: 6
Завершенные тесты: 2
12.07.2015, 22:43 #7
потоки ввода вывода это по аналогии с чем то текущим в одну сторону: вода из крана - поток ввода, слив в унитазе раковине - поток вывода.
0
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,082
Завершенные тесты: 2
12.07.2015, 22:44 #8
Цитата Сообщение от Cra3y Посмотреть сообщение
потоки ввода вывода это по аналогии с чем то текущим в одну сторону: вода из крана - поток ввода, слив в унитазе раковине - поток вывода.
Скорее наоборот
0
Evg
Эксперт CАвтор FAQ
18029 / 6261 / 427
Регистрация: 30.03.2009
Сообщений: 17,200
Записей в блоге: 27
12.07.2015, 23:16 #9
заморочки функций fseek и fwrite

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

Добавлено через 4 минуты
Файловый дескриптор не обязательно ассоциирован с файлом. Это может быть произвольное устройство, в том числе и консоль. Обычный printf по сути дела говорит операционной системе записать такой-то текст в файловый дескриптор номер N, не заморачиваясь вопросами, а чем же в реальности является файловый дескриптор (консолью, файлом на диске, или чем-то ещё)
0
Renji
1926 / 1324 / 298
Регистрация: 05.06.2014
Сообщений: 3,813
13.07.2015, 00:37 #10
Цитата Сообщение от proont Посмотреть сообщение
Везде написано про какой-то поток. Но что представляет из себя этот поток? Что это такое?
Последовательность байт которую можно читать сначала (извлекать данные из потока) или дописать чего ни будь в конец (поместить данные в поток). Причем, все прочитанное считается из этого потока пропавшим (если у него нет дополнительных свистелок и перделок для промотки вперед-назад). << и >> могут эти данные дополнительно преобразовывать (пихаешь в них число, они в поток кидают текст). А уж что там с дописанными в конец данными происходит, откуда они в начале потока берутся, пользователя потока абсолютно не колышит.
0
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
13.07.2015, 09:31 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от proont Посмотреть сообщение
что представляет из себя этот поток?
Как можно представить себе поток?
1
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 10:06 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от lss Посмотреть сообщение
Учебники пересказывать, или может быть сам почитаешь?
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Так нам, что на детских картиночках тебе показать ?
Потоки устроены довольно сложно. На картинках явно всего не объяснишь.

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

Остановлюсь только на том на что в книгах не делают акцент.
Если в двух словах, то в ОС есть функции вывода в консоль и в файлы (WriteFile/ReadFile для файлов и WriteConsole/ReadConsole для консоли). Так вот библиотека потоков в С++ это всего лишь обертка над этими функциями, позволяющая удобно выводить и читать информацию. Если вы внимательно изучите структуры потоков то увидите, что они всего лишь выполняют форматирование, а выводом/чтением занимаются буфферы.
Опять же подробнее у Джосатисса.
1
lss
921 / 850 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
13.07.2015, 10:25 #13
Цитата Сообщение от Ilot Посмотреть сообщение
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
И что с того? Ты, сам, на форуме узнавал, что это такое и как работает?
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
13.07.2015, 10:56 #14
Цитата Сообщение от lss Посмотреть сообщение
Ты, сам, на форуме узнавал, что это такое и как работает?
Нет. Джосатисс + cplusplus.com + разбор исходников компилятора.
0
hoggy
6672 / 2856 / 491
Регистрация: 15.11.2014
Сообщений: 6,367
Завершенные тесты: 1
13.07.2015, 10:56 #15
Цитата Сообщение от Ilot Посмотреть сообщение
Ни в одном учебнике, по крайней мере которые я знаю, не описаны нормально потоки.
что значит "нормально" ?

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

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

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

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

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

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

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

Цитата Сообщение от Ilot Посмотреть сообщение
Потоки устроены довольно сложно.
это не принципиально.
вдумайтесь, что нужно новичку:
Цитата Сообщение от proont Посмотреть сообщение
Но что представляет из себя этот поток? Что это такое?
новичку нужно понять смысл самой абстракции.
а не архитектуру/исходный код basic_iostream.
1
13.07.2015, 10:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2015, 10:56
Привет! Вот еще темы с ответами:

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

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

Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере - C++
Есть класс, содержащий объекты и конструктор. Конструктор объявляется в одном из cpp файлов(их несколько). Можно ли, как-то, использовать...

Что такое перегрузка оператора? Что у меня в коде за ошибка? - C++
Что же я написал?? Что оно не компилится? Что значит error C2275: Superclass: недопустимое использование этого типа в качестве выражения ...


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

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

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