Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > потоки ввода/вывода


Автор: hoz 28.6.2013, 14:56
Цитата(cutwater @  10.7.2008,  03:25 Найти цитируемый пост)
msdn либо man в рукиhttp://ru.wikipedia.org/wiki/Iostreamссылки есть, все есть..

Читаю документацию. Затрудняюсь понять вот изначально строки:
Цитата

ostream — заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++.

Организация ввода/вывода ... Т.е. откуда и куда?
Я так понимаю, весь код который написан и скомпилирован, он так сказать работает и исполняет своё задание. А чтобы он попал куда-нибудь " вне " нужно использовать эту библиотеку? Без данной библиотеки код не сможет попасть в какой-нибудь буфер? И дальше самого написаного кода результат его не уйдёт? Я верно понимаю?

Автор: fish9370 28.6.2013, 15:22
Цитата(hoz @  28.6.2013,  14:56 Найти цитируемый пост)
Я так понимаю, весь код который написано и скомпилирован, он так сказать работает и исполняет своё задание. А чтобы он попал куда-нибудь " вне " нужно использовать эту библиотеку? Без данной библиотеки код не сможет попасть в какой-нибудь буфер? И дальше самого написаного кода результат его не уйдёт? Я верно понимаю?


эта библиотека обертка над системными вызовами операционной системы.. другими словами взаимодействие между процессом и файлом производится операционной системой.. эта библиотелка лишь обеспечивает один из возможных способов обращения.. по сути ostream и fprintf это одно и тоже они оба в глубине своей обратятся к системному вызову write (в юникс-системе).

в С++ принято использовать этот механизм

Автор: hoz 28.6.2013, 15:45
Цитата(fish9370 @  28.6.2013,  15:22 Найти цитируемый пост)
эта библиотека обертка над системными вызовами операционной системы.. другими словами взаимодействие между процессом и файлом производится операционной системой.. эта библиотелка лишь обеспечивает один из возможных способов обращения.. по сути ostream и fprintf это одно и тоже они оба в глубине своей обратятся к системному вызову write (в юникс-системе).в С++ принято использовать этот механизм

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

Автор: fish9370 28.6.2013, 16:00
Цитата(hoz @  28.6.2013,  15:45 Найти цитируемый пост)
Т.е. в каждой операционной системе есть своя библиотека для канкретных целей?  iostream для взаимодействия с файлами (только с файлами или ещё что-то ? ). Ну а для других целей подключаются другие библиотеки, так?


не совсем верно, разработчики библиотеки позаботились о том, чтобы этот класс работал во всех стандартных ОС.. он входит в состав, так называемой стандартной библиотеки (std).

в юниксе есть такое понятие - все есть файл (не придерайтесь).. т.е. взаимодействие с внешними системами производится посредством одних и тех же сущностей - файловых дескрипторов.. межпроцессное взаимодействие, работа с файлами, работа с сетью..

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

Автор: bsa 28.6.2013, 16:02
hoz, iostream - это стандартная библиотека ввода/вывода. Она есть во всех ОС, в которых поддерживается С++.

Как правильно заметил fish9370, эта библиотека, равно как и stdio, просто обертка вокруг системных вызовов осуществляющих запись. Кроме того, iostream предоставляет интерфейс (читай стандарт) для создания своих потоков ввода/вывода (например, последовательный порт).

Естественно, что для разных целей есть разные библиотеки. Думаю, логично, что для работы с изображениями нужна одна библиотека, для работы с сетью другая, а для создания 3Д сцен - четвертая. И так далее.
Есть такая вещь, называется "фреймворк". Это набор библиотек, который покрывает какую-то сферу деятельности. Например, Qt облегчает разработку типичных прикладных программ, преимущественно с графическим интерфейсом. А boost - разработка в основном консольных приложений, в т.ч. и серверов (демонов).

Автор: hoz 3.7.2013, 16:13
Цитата(bsa @  28.6.2013,  16:02 Найти цитируемый пост)
hoz, iostream - это стандартная библиотека ввода/вывода. Она есть во всех ОС, в которых поддерживается С++.

Тогда почему в документации сказано, что:
Цитата

iostream — заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++
 ?

Автор: bsa 3.7.2013, 16:16
потому что iostream - это библиотека, хидер и название класса (наследник istream и ostream). Одно другому не противоречит. Просто "библиотека" понятие более широкое, чем класс и хидер. Так как она содержит хидер, определяющий класс.

Добавлено через 3 минуты и 41 секунду
кстати, в самом стандарте библиотека называется "Input / Output Library". Но чтобы было понятно другим, обычно ее называют iostream(s).

Автор: hoz 4.7.2013, 08:08
 Под "хидером" Вы подразумеваете заголовочный файл от англ. header ?


Автор: bsa 4.7.2013, 10:16
hoz, в обычной речи его всегда так называют.

Автор: fish9370 4.7.2013, 12:35
Цитата(bsa @  4.7.2013,  10:16 Найти цитируемый пост)
hoz, в обычной речи его всегда так называют


некоторые его называют согласно английскому произношению хЭдер.. smile

Автор: hoz 4.7.2013, 14:21
Цитата(bsa @  28.6.2013,  16:02 Найти цитируемый пост)
hoz, iostream - это стандартная библиотека ввода/вывода. Она есть во всех ОС, в которых поддерживается С++.


Цитата(bsa @  28.6.2013,  16:02 Найти цитируемый пост)
равно как и stdio, просто обертка вокруг системных вызовов осуществляющих запись. Кроме того, iostream предоставляет интерфейс (читай стандарт) для создания своих потоков ввода/вывода (например, последовательный порт).


bsa, больше всего мне, на данный непонятно вот что: начав капаться в файлах-заголовках и файлах-библиотеках я увидел много файлов, с, казалось бы, идентичной задачей. Я поясню:
Возьмём например iostream и stdio. Оба заголовочных файла служат для реализации задачи ввода/вывода (input/output). Откуда знать программисту, какой из них использовать для этой задачи в своём коде?


Цитата(fish9370 @  4.7.2013,  12:35 Найти цитируемый пост)
некоторые его называют согласно английскому произношению хЭдер.. 


fish9370, вот я потому и переспросил, т.к. произносится то через "э", если уж быть точным. А тут разговорный видать..

Автор: fish9370 4.7.2013, 15:48
Цитата(hoz @  4.7.2013,  14:21 Найти цитируемый пост)
А тут разговорный видать..


скорее ошибочный, надеюсь люди будут потихоньку исправляться, а то слух режет.. smile

Добавлено через 10 минут и 10 секунд
Цитата(hoz @  4.7.2013,  14:21 Найти цитируемый пост)
Возьмём например iostream и stdio. Оба заголовочных файла служат для реализации задачи ввода/вывода (input/output). Откуда знать программисту, какой из них использовать для этой задачи в своём коде?



с этим все просто, stdio это наследие Си, iostream это Си++

у Сишника нет такого выбора, Сиплюсплюсник, чаще возьмет iostream ради объектноориентированности

Автор: bsa 4.7.2013, 17:17
Цитата(hoz @  4.7.2013,  15:21 Найти цитируемый пост)
bsa, больше всего мне, на данный непонятно вот что: начав капаться в файлах-заголовках и файлах-библиотеках я увидел много файлов, с, казалось бы, идентичной задачей.
А может не надо копаться? Может стоит почитать учебники? Просто за то время, что ты тусуешься в этой теме давно можно было прочитать тех же Дейтейлов.

Автор: hoz 4.7.2013, 17:33
Цитата(bsa @  4.7.2013,  17:17 Найти цитируемый пост)
А может не надо копаться? Может стоит почитать учебники? Просто за то время, что ты тусуешься в этой теме давно можно было прочитать тех же Дейтейлов.

Изначально я начал читать "Джесс Либерти. Освой самостоятельно С++ за 21 день". Но там приводятся такие примеры, которые сразу не понятны, т.к. библиотеки, которые приводятся и используются в примерах не обоснованы и не объясняется почему их применяют.
 Попробую почитать тогда "Дейтел Х. Как программировать на C++". Надеюсь это даст более детальное понимаю. Я и сам хочу почитать, а не спрашивать всё в подряд, но литературы много, а с чего лучше начать - затрудняюсь. Хочется читать, и понимаю последовательно что читаю, а не откладывать всё непонятное встречаемое на пути на потом.

Автор: bsa 5.7.2013, 09:56
В этом разделе прикреплена тема с ответами на часто задаваемые вопросы. там есть список литературы для новичков.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)