| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > потоки ввода/вывода |
| Автор: fish9370 28.6.2013, 15:22 | ||
эта библиотека обертка над системными вызовами операционной системы.. другими словами взаимодействие между процессом и файлом производится операционной системой.. эта библиотелка лишь обеспечивает один из возможных способов обращения.. по сути ostream и fprintf это одно и тоже они оба в глубине своей обратятся к системному вызову write (в юникс-системе). в С++ принято использовать этот механизм |
| Автор: hoz 28.6.2013, 15:45 | ||
Т.е. в каждой операционной системе есть своя библиотека для канкретных целей? iostream для взаимодействия с файлами (только с файлами или ещё что-то ? ). Ну а для других целей подключаются другие библиотеки, так? |
| Автор: fish9370 28.6.2013, 16:00 | ||
не совсем верно, разработчики библиотеки позаботились о том, чтобы этот класс работал во всех стандартных ОС.. он входит в состав, так называемой стандартной библиотеки (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 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 |
некоторые его называют согласно английскому произношению хЭдер.. |
| Автор: hoz 4.7.2013, 14:21 | ||||
bsa, больше всего мне, на данный непонятно вот что: начав капаться в файлах-заголовках и файлах-библиотеках я увидел много файлов, с, казалось бы, идентичной задачей. Я поясню: Возьмём например iostream и stdio. Оба заголовочных файла служат для реализации задачи ввода/вывода (input/output). Откуда знать программисту, какой из них использовать для этой задачи в своём коде? fish9370, вот я потому и переспросил, т.к. произносится то через "э", если уж быть точным. А тут разговорный видать.. |
| Автор: fish9370 4.7.2013, 15:48 | ||
скорее ошибочный, надеюсь люди будут потихоньку исправляться, а то слух режет.. Добавлено через 10 минут и 10 секунд
с этим все просто, stdio это наследие Си, iostream это Си++ у Сишника нет такого выбора, Сиплюсплюсник, чаще возьмет iostream ради объектноориентированности |
| Автор: bsa 4.7.2013, 17:17 |
| А может не надо копаться? Может стоит почитать учебники? Просто за то время, что ты тусуешься в этой теме давно можно было прочитать тех же Дейтейлов. |
| Автор: hoz 4.7.2013, 17:33 | ||
Изначально я начал читать "Джесс Либерти. Освой самостоятельно С++ за 21 день". Но там приводятся такие примеры, которые сразу не понятны, т.к. библиотеки, которые приводятся и используются в примерах не обоснованы и не объясняется почему их применяют. Попробую почитать тогда "Дейтел Х. Как программировать на C++". Надеюсь это даст более детальное понимаю. Я и сам хочу почитать, а не спрашивать всё в подряд, но литературы много, а с чего лучше начать - затрудняюсь. Хочется читать, и понимаю последовательно что читаю, а не откладывать всё непонятное встречаемое на пути на потом. |
| Автор: bsa 5.7.2013, 09:56 |
| В этом разделе прикреплена тема с ответами на часто задаваемые вопросы. там есть список литературы для новичков. |