Глава 10 Потоки и файлы
Глава 10
Потоки и файлы
10.0. Введение
Потоки (streams) являются одной из самых мощных (и сложных) компонент стандартной библиотеки С++. Их применение при простом, неформатированном вводе-выводе в целом не представляет трудностей, однако ситуация усложняется, если необходимо изменить формат с помощью стандартных манипуляторов или приходится писать свои собственные манипуляторы. Поэтому первые несколько рецептов описывают различные способы форматирования вывода потока данных. Следующие два рецепта показывают, как можно записывать объекты класса в поток и считывать их оттуда.
Затем рецепты переходят с темы чтения и записи содержимого файлов на работу с самими файлами (и каталогами). Если в вашей программе используются файлы особенно если такая программа является демоном или процессом на стороне сервера, вам, вероятно, потребуется создавать файлы и каталоги, удалять их, переименовывать и выполнять другие операции над ними. Существует ряд рецептов, которые показывают, как следует решать эти непривлекательные, но необходимые задачи в С++.
Последняя треть рецептов показывает, как можно манипулировать именами файлов и путями доступа к ним, используя многие стандартные строковые функции-члены. Стандартные строки содержат массу функций, предназначенных для анализа и манипулирования их содержимым, и если вам придется анализировать пути доступа к файлам и имена файлов, эти функции окажутся полезными. Если в этих рецептах нет того, что вам требуется, вернитесь к главе 7: возможно, там описано то, что вы ищете.
Манипулирование файлами требует прямого взаимодействия с операционной системой (ОС), но между различными ОС часто имеются тонкие отличия (а иногда вопиющие несовместимости). Многие типичные операции над файлами и каталогами выполняются с помощью вызовов системных функций стандартной библиотеки С. которые работают одинаково или аналогично в различных системах. В рецептах я отмечаю отличия версий библиотек различных ОС там, где они имеются.
Как я отмечал в предыдущих главах, Boost — это проект открытого исходного кода, результатом которого стал ряд высококачественных и переносимых библиотек. Однако поскольку данная книга посвящена C++, а не проекту Boost, во всех возможных случаях я предпочитаю пользоваться стандартными решениями С++. Однако во многих случаях (наиболее примечательный — рецепт 10.12) нельзя получить решения, используя стандартную библиотеку С++, поэтому я пользуюсь библиотекой Boost Filesystem, написанной Биманом Дейвисом (Beman Dawes); она обеспечивает переносимый интерфейс для файловой системы, позволяя получать переносимые решения. Используйте библиотеку Boost Filesystem, если требуется обеспечить переносимость взаимодействия с файловой системой, и это позволит вам сэкономить много времени и многих усилий. Дополнительную информацию по проекту Boost вы найдете на сайте www.boost.org.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 4 Файлы и файловый ввод/вывод
Глава 4 Файлы и файловый ввод/вывод Данная глава описывает базовые файловые операции: открытие и создание файлов, чтение и запись в них, перемещение в них и их закрытие. По ходу дела она представляет стандартные механизмы для обнаружения ошибок и сообщений о них. Глава
ГЛАВА 7 Потоки и планирование выполнения
ГЛАВА 7 Потоки и планирование выполнения Основной единицей выполнения в Windows является поток, и одновременно несколько потоков могут выполняться в рамках одного процесса, разделяя его адресное пространство и другие ресурсы. В главе 6 процессы ограничивались только одним
Глава 26 Программные потоки
Глава 26 Программные потоки 26.1. Введение Согласно традиционной модели Unix, когда процессу требуется, чтобы некое действие было выполнено каким-либо другим объектом, он порождает дочерний процесс, используя функцию fork, и этим порожденным процессом выполняется необходимое
Глава 31 Потоки (STREAMS)
Глава 31 Потоки (STREAMS) 31.1. Введение В этой главе мы приводим обзор потоков STREAMS и функций, используемых приложением для доступа к потоку. Наша цель — понять, как реализованы сетевые протоколы в рамках потоковых систем. Также мы создаем простой клиент TCP с использованием TPI —
Глава 7 Качаем файлы
Глава 7 Качаем файлы – Менеджеры закачки – FTP-клиенты У каждого пользователя время от времени возникает необходимость сохранить информацию из Интернета. Сохранение обычных веб-страниц сложностей не вызывает – достаточно выбрать Файл ? Сохранить как и место
Глава 15 INF-файлы
Глава 15 INF-файлы Хотелось бы в этой главе описать некоторые возможности INF-файлов. Здесь не будет полностью рассмотрен язык INF-файлов и способы написания на нем сценариев, но тем не менее попробуем понять, как с помощью INF-файлов можно выполнять копирование и удаление
Глава 13. Потоки в Ruby
Глава 13. Потоки в Ruby Он тянет нить своего красноречия искуснее, чем развивает свои доводы. Шекспир, «Бесплодные усилия любви», акт V, сцена 1[15] Потоки еще иногда называют облегченными процессами. Это просто способ обеспечить параллельное выполнение без накладных расходов,
Глава 4 Потоки
Глава 4 Потоки Потоки, как и процессы, — это механизм, позволяющий программам выполнять несколько действий одновременно. Потоки работают параллельно. Ядро Linux планирует их работу асинхронно, прерывая время от времени каждый из них, чтобы дать шанс остальным.С
Глава 26. Файлы
Глава 26. Файлы сценарии начальной загрузкиЭти файлы содержат объявления псевдонимов и переменных окружения, которые становятся доступны Bash после загрузки и инициализации системы./etc/profileНастройки системы по-умолчанию, главным образом настраивается окружение командной
Глава 4 Диски, каталоги, файлы
Глава 4 Диски, каталоги, файлы • Диски• Каталоги и пути• ФайлыВ этой главе вы познакомитесь с некоторыми возможностями получения полезной информации о файловой системе (и от файловой системы). Примеры главы целиком основаны на использовании API-функций для получения
Глава 4 Функции и Файлы
Глава 4 Функции и Файлы Итерация свойственна человеку, рекурсия божественна. Л. Питер Дойч Все нетривиальные программы собираются из нескольких раздельно компилируемых единиц (их принято называть просто файлами). В этой главе описано, как раздельно откомпилированые
Глава 8 Потоки
Глава 8 Потоки ``bad input char: .Ppm(*=P!..*@Z9A*)5!!!!!"syui!!!"!Mp#V6P?p8`;!4lf amp; сообщение об ошибке (сокращенное) Язык С++ не обеспечивает средств для ввода/вывода. Ему это и не нужно. Такие средства легко и элегантно можно содать с помощью самого языка. Описанная здесь стандартная билиотека
8.3 Файлы и Потоки
8.3 Файлы и Потоки Потоки обычно связаны с файлами. Библиотека потоков содает стандартный поток ввода cin, стандартный поток вывода cout и стандартный поток ошибок cerr. Программист может отрывать другие файлы и создавать для них
ГЛАВА 3 Файлы и папки
ГЛАВА 3 Файлы и папки Компьютер и пользователь. Техника для человека, человеческий труд для совершенствования техники. Два взаимосвязанных понятия. Стандартные операции, выполняемые пользователем, сводятся к одному — к работе с файлами и папками. В файлах хранится вся
Глава 7 Файлы и папки
Глава 7 Файлы и папки 7.1. Файл и имя файла Информация на носителях данных (жестких, оптических дисках, дискетах) хранится в файлах. Строгое определение файла звучит так: «файл — это поименованная область на диске». Разберемся, что здесь к чему. При форматировании жесткого