C как создать файл на диске

Обновлено: 03.07.2024

Хедер fstream предоставляет функционал для считывания данных из файла и для записи в файл. В целом он очень похож на хедер iostream , который работает с консолью, поскольку консоль это тоже файл. Поэтому все основные операции такие же, за мелкими отличиями, как в предыдущей теме по iostream.

Наиболее частые операции следующее:

    1. Методы проверки открыт ли файл is_open() и достигнут ли конец файла eof()
      1. Настройка форматированного вывода для >> с помощью width() и precision()
      1. Операции позиционирования tellg(), tellp() и seekg(), seekp()

      Это не все возможности, которые предоставляет библиотека fstream. Рассматривать все сейчас мы не будем, поскольку их круг применения достаточно узок. Познакомимся с вышеперечисленными. Начнем с класса чтения.

      Класс ifstream

      Открытие файла в конструкторе выглядит так:

      ifstream file ( "d:\\1\\файл.txt" ) ; // открываем файл в конструкторе

      Так мы просим открыть файл txt с именем файл.txt, который лежит в папке с названием 1, а папка находится на диске d.

      Использование метода open() удобно, если программист не хочет сразу привязываться к файлу. Вдруг нужно свойство класса или глобальную переменную, ну а открывать файл уже потом. Если же нужно открыть файл внутри некой функции, поработать с ним и закрыть, то можно прописать путь к файлу прямо в конструкторе. В общем зависит от ситуации.

      Так все отработает нормально и файл откроется:

      библиотека fstream, работа с файлами в с++, программирование для начинающих

      Второй вариант проверки с использованием метода is_open() :

      Метод is_open() вернет 1, если файл найден и успешно открыт. Иначе вернет 0 и сработает код прописанный в блоке else .

      Если файл успешно открыт, из него можно производить чтение.

      Оператор считывания >>

      Так же как и в iostream считывание можно организовать оператором >> , который указывает в какую переменную будет произведено считывание:

      Считает вещественное, целое и строку. Считывание строки закончится, если появится пробел или конец строки. Стоит отметить, что оператор >> применяется к текстовым файлам. Считывание из бинарного файла производить лучше всего с помощью метода read().

      Кстати этот оператор достаточно удобен, если стоит задача разделить файл на слова:

      Методы getline() и get()

      Считывание целой строки до перевода каретки производится так же как и в iostream методом getline(). Причем рекомендуется использовать его переопределеную версию в виде функции, если считывается строка типа string:

      Если же читать нужно в массив символов char[], то либо get() либо getline() именно как методы:

      Принцип в общем тот же, что и в аналогах из iostream: Указывается в параметрах буфер (переменная, куда будет производиться чтение), или точнее указатель на блок памяти (если переменная объявлена статически: char buffer[255] к примеру, то пишется в параметры &buffer), указывается максимальное количество считываемого (в примере это n), дабы не произошло переполнение и выход за пределы буфера и по необходимости символ-разделитель, до которого будет считка (в примере это пробел). Надеюсь я не больно наступлю на хобот фанатикам Си, если сажу что эти две функции на 99% взаимозаменяемы, и на 95% могут быть заменены методом read() .

      Метод read()

      Похож на предыдущий пример?

      Метод close()

      Метод eof()

      Проверяет не достигнут ли конец файла. Т.е. можно ли из него продолжать чтение. Выше пример с считкой слов оператором >> как раз использует такую проверку.

      Метод seekg()

      Производит установку текущей позиции в нужную, указываемую числом. В этот метод так же передается способ позиционирования:


      Мне, например, задавали такой вопрос буквально вчера при печати фотографий в студии. Кстати, этот вопрос задают в любом копи-центре, когда вы хотите что-то отсканировать и сохранить на флешку.

      Если вас вводит в ступор этот вопрос, то читайте дальше информацию и будете в курсе данного понятия.

      Подробнее про корневую папку

      Корневая папка или корневой каталог является местом, где хранятся все файлы системы. Она существует на компьютере, на флешке, на телефоне, а также на сайте.

      Что такое корневая папка в компьютере

      Корневая папка есть в каждом компьютере. Их количество зависит от количества дисков. Например, в каждом ПК или ноутбуке есть 2 как минимум корневые папки: на диске С и на диске D.

      В основном, пользователи сохраняют файлы на диск С. Сам диск и является непосредственно корневой папкой, из которой в дальнейшем вырастают другие.


      Что такое корневая папка на флешке (карте памяти)

      Корневая папка имеет одинаковый принцип работы на всех устройствах. Так, когда вы вставляете карту памяти в компьютер, чтобы сохранить туда какую-то информацию, вы ее скачиваете в корневую папку флешки. Уже потом, когда вам потребуется рассортировать файлы на карте памяти, вы, возможно, создадите некие дополнительные папки, которые будут ответвляться от основного «корня» флешки.

      Идеальный пример, на котором сразу становится понятно явление корневой папки — это дерево. У любого дерева есть корни, из которых оно растет: со многочисленными ветвями, листочками и т. д. В качестве дерева у нас выступает компьютер, в качестве корней — корневой каталог, в качестве ветвей и листочков — папки с файлами.

      Что такое корневая папка в телефоне

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

      Что такое корневая папка сайта

      Для тех, кто зарабатывает или хочет зарабатывать на сайтах или блогах, пригодится информация, что у веб-ресурсов тоже есть корень. Корень web-сайта — это место, где хранятся все необходимые для работы ресурса файлы, которые загружены на сервере.

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

      Статьи в тему:

      Вы можете спросите: «А для чего мне вообще нужно знать информацию о корне сайта?» Ответ простой: если вы вдруг заведете свой блог и захотите получать с него пассивный доход, например, посредством рекламы, то вам нужно будет загрузить рекламный файл в корневую папку сайта. А как вы это сможете сделать, если ничего про корень не знаете, правильно?

      Также любому блогеру или веб-мастеру необходимо знать эту информацию, поскольку для внесения изменений в какой-либо файл на ресурсе, нужно заходить в корень сайта.

      Где находится корневая папка?

      Что это такое — корневая папка, мы выяснили. Теперь необходимо разобраться, как ее найти и для чего это нужно. Где можно искать корневой каталог?

      Это можно сделать в:

      На флешке

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

      На телефоне

      Как искать корневую папку в телефоне? Телефон на андроиде может открыть вам доступ к корневой папке при помощи 2-х способов:

      • с помощью файлового менеджера при подключении телефона к компьютеру;
      • с помощью программы Total Commander.

      Первый способ самый простой. Подключив телефон к компьютеру с помощью usb-провода, вы увидите на экране файловый менеджер, который предложит открыть папку для просмотра файлов. Папка, которую вы откроете и будет являться той самой корневой, которая содержит в себе множество полезных системных файлов и папку SD mini (карта памяти).

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

      Второй способ тоже достаточно простой. Если у вас телефон на ОС Андроид, скачайте программу Total Commander из Play market. Установив ее на телефон, откройте приложение. Вы увидите множество папок с разными названиями, среди них будет папка «Корень файловой системы». Это то, что вам нужно. Приложение выполняет полезную роль сортировщика файлов, их удаления. С его помощью можно нормализовать работу телефона и почистить его память.

      На сайте

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

      Для соединения и входа в корень каталога можно воспользоваться FTP. Мы, к примеру, работаем либо через FileZilla, либо через Total Commander. Также еще можно воспользоваться панелью управления на хостинге.

      Чаще всего директория веб-ресурса находится в папках со следующими названиями «HTDOCS», «www», «domains». В зависимости от выбранного вами хостинга названия папок могут отличаться. Если вы сами не можете найти корень сайта, то можно написать в службу поддержки хостера.

      Файловый менеджер для открытия корневой папки сайта выглядит вот так:


      Войдя в папку «www», у меня откроются вот такие папочки wp-admin, wp-content, могут быть robоts.txt, .htaccess.


      Если вы работаете на платформе WordPress, то в корневом каталоге вы найдете такие же файлы.

      На компьютере

      Как найти корень на компьютере? Здесь все предельно просто. Все мы знаем о наличии в компьютере дисков С и D. Каждый диск является этой самой корневой папкой. То есть у диска С корневая папка имеет одноименное название. В ней находятся, как правило, другие папки с названием Документы, Видео, Музыка и т. д. Чтобы попасть в корневую папку диска С, вам нужно:

      • нажать кнопку «Пуск»;
      • открыть «Компьютер»;
      • открыть диск С.


      Друзья, надеюсь, вы узнали нечто новое из этой статьи, что вам непременно пригодится, и я дала вам исчерпывающий ответ на вопрос «Что такое корневая папка?»

      Может быть вы знаете другие интересные способы обнаружения корневых папок сайта? Поделитесь ими в комментариях!

      Онлайн-эксперимент в блоггинге!

      Следите за блогерским шоу, проходящем в реальном времени, на ваших глазах. Здесь и сейчас.

      Не забывайте подписываться на получение анонсов статей с блога, а также на наши странички в соцсетях, Youtube-канал.

      Сегодня обнаружил что не могу создавать файлы на диске D: Удалять могу, создавать нет. Папки создаются. Если бы это касалось системного диска понять можно бы было. А диск то диск D. На двух других E и R все в норме.

      Ошибка которая вылазит:

      Если что, диск Д, это отдельный винт. Если что вот права.


      Права были изменены только что. Для Юзерс не было полного доступа. После нажатия на "применить" система "пыталась" обрабоатать все файлы на диске, но на некоторые папки не удалось установить права.


      При работе на хостинге одни файлы необходимо загружать в корневой каталог сайта, другие в папки разной вложенности, и зачастую к ним требуется указать правильный путь. Начинающие вебмастеры здесь испытывают сложности — где корень сайта, что такое путь и как его прописывать?

      На самом деле все элементарно, и прочитав статью до конца, Вы будете ориентироваться в вопросе так же легко — я постараюсь объяснить все простыми словами.

      И так, продолжаем цикл статей, посвященных работе на хостинге. Прошлые записи касались выбора провайдера, регистрации аккаунта и домена, сейчас поговорим о структуре файловой системы, корневом каталоге и путях к файлам.

      Корень сайта — где это и что это.

      Прежде чем объяснять, где и что находится, необходимо уяснить с понятие уровней вложенности.

      Допустим, Вы на компьютере создали папку под названием «Семья», закинули в нее свои фотографии, и в нее же поместили папку «Мы на природе» с видеороликами. Корневой в данном случае является «Семья», и все содержимое лежит в ее корне. А вот файлы из «Мы на природе» находятся на следующем от корневого уровне вложенности. И так далее.

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

      Для наглядности я нарисовал картинку


      А вот так выглядит корень одного из моих сайтов в аккаунте хостинга


      Путь к файлам корневого каталога.

      По умолчанию, при указании пути до любой папки роботы поисковиков открывают файл под названием index (расширением html или php), поэтому дописывать его не нужно — сработает такая ссылка.

      Как правильно указать путь к файлам на других уровнях.

      То есть, указывается адрес корневого каталога, затем через слэш имя первой вложенной папки, опять же через слэш следующей и так далее до нужной (если они вложены одна в другую), а затем уже пишется название нужного файла.

      На одном домене, кроме основного сайта, можно держать множество других одностраничных лендингов или многостраничников. Для этого, к примеру, можно разместить в корне (или на другом уровне) отдельные папки с лендингами и в ссылке указывать к ним путь — роботы автоматически откроют в них индексный файл index.html или index.php. Если же он назван по-другому, необходимо просто дописать его в адресе, как я уже говорил выше.

      Думаю, что объяснил подробно и понятно. Если нет — спрашивайте в комментариях, отвечу.

      Немного практики.

      Чтобы на Макхост открыть какой-либо корневой каталог, необходимо:

      1. В левом меню нажать ссылку «Сайты».
      2. Выбрать из появившегося списка нужный и кликнуть по нему.
      3. В открывшемся меню управления выбрать «Файловый менеджер».


      Все, каталог открыт.


      Часто при работе с сервисами у Вас требуют: «в корне сайта создайте файл с именем»… Как это сделать?

      Есть два варианта — создать его на компьютере и закачать в корневую папку или сделать это прямо на хостинге. Начнем с второго способа — спускаемся вниз содержимого каталога и жмем соответствующую ссылку (замечу, что таким же способом можно создать и новую папку)


      В открывшемся окне пишем название нового файла и нужное расширение — html, php, txt или другое. Я на примере создаю html.


      Вот он разместился в корне сайта, но пустой — внутри нет ничего.


      Чтобы вставить необходимый текст или код (или отредактировать существующий), нужно в этой же строке нажать на карандашик справа. Откроется окно, вписываете необходимое и сохраняете. Все.

      Если необходимо загрузить файл в корневой каталог сайта (как и в любое другое место), действуем по схеме выше — спускаемся вниз списка в открытом каталоге, где хотим разместить загруженное, и жмем «Закачать…» (смотрите на скриншоте выше).

      Далее все как обычно — всплывает окно с выбором объекта загрузки, находите нужное на компьютере и закачиваете. Теперь можно указать путь к файлу, если потребуется.

      На этом заканчиваю. Остались вопросы — читайте подробнее о том, как заливать на хостинг.

      Для удобства обращения информация в запоминающих устройствах хранится в виде файлов.

      Файл – именованная область внешней памяти, выделенная для хранения массива данных. Данные, содержащиеся в файлах, имеют самый разнообразный характер: программы на алгоритмическом или машинном языке; исходные данные для работы программ или результаты выполнения программ; произвольные тексты; графические изображения и т. п.

      Каталог ( папка , директория ) – именованная совокупность байтов на носителе информации, содержащая название подкаталогов и файлов, используется в файловой системе для упрощения организации файлов.

      Файловой системой называется функциональная часть операционной системы, обеспечивающая выполнение операций над файлами. Примерами файловых систем являются FAT (FAT – File Allocation Table, таблица размещения файлов), NTFS, UDF (используется на компакт-дисках).

      Существуют три основные версии FAT: FAT12, FAT16 и FAT32. Они отличаются разрядностью записей в дисковой структуре, т.е. количеством бит, отведённых для хранения номера кластера. FAT12 применяется в основном для дискет (до 4 кбайт), FAT16 – для дисков малого объёма, FAT32 – для FLASH-накопителей большой емкости (до 32 Гбайт).


      Рассмотрим структуру файловой системы на примере FAT32.

      Файловая структура FAT32

      Устройства внешней памяти в системе FAT32 имеют не байтовую, а блочную адресацию. Запись информации в устройство внешней памяти осуществляется блоками или секторами.

      Сектор – минимальная адресуемая единица хранения информации на внешних запоминающих устройствах. Как правило, размер сектора фиксирован и составляет 512 байт. Для увеличения адресного пространства устройств внешней памяти сектора объединяют в группы, называемые кластерами.

      Кластер – объединение нескольких секторов, которое может рассматриваться как самостоятельная единица, обладающая определёнными свойствами. Основным свойством кластера является его размер, измеряемый в количестве секторов или количестве байт.

      Файловая система FAT32

      Файловая система FAT32 имеет следующую структуру.

      Нумерация кластеров, используемых для записи файлов, ведется с 2. Как правило, кластер №2 используется корневым каталогом, а начиная с кластера №3 хранится массив данных. Сектора, используемые для хранения информации, представленной выше корневого каталога, в кластеры не объединяются.
      Минимальный размер файла, занимаемый на диске, соответствует 1 кластеру.

      Загрузочный сектор начинается следующей информацией:

      • EB 58 90 – безусловный переход и сигнатура;
      • 4D 53 44 4F 53 35 2E 30 MSDOS5.0;
      • 00 02 – количество байт в секторе (обычно 512);
      • 1 байт – количество секторов в кластере;
      • 2 байта – количество резервных секторов.

      Кроме того, загрузочный сектор содержит следующую важную информацию:

      • 0x10 (1 байт) – количество таблиц FAT (обычно 2);
      • 0x20 (4 байта) – количество секторов на диске;
      • 0x2С (4 байта) – номер кластера корневого каталога;
      • 0x47 (11 байт) – метка тома;
      • 0x1FE (2 байта) – сигнатура загрузочного сектора ( 55 AA ).


      Сектор информации файловой системы содержит:

      • 0x00 (4 байта) – сигнатура ( 52 52 61 41 );
      • 0x1E4 (4 байта) – сигнатура ( 72 72 41 61 );
      • 0x1E8 (4 байта) – количество свободных кластеров, -1 если не известно;
      • 0x1EС (4 байта) – номер последнего записанного кластера;
      • 0x1FE (2 байта) – сигнатура ( 55 AA ).


      Таблица FAT содержит информацию о состоянии каждого кластера на диске. Младшие 2 байт таблицы FAT хранят F8 FF FF 0F FF FF FF FF (что соответствует состоянию кластеров 0 и 1, физически отсутствующих). Далее состояние каждого кластера содержит номер кластера, в котором продолжается текущий файл или следующую информацию:

      • 00 00 00 00 – кластер свободен;
      • FF FF FF 0F – конец текущего файла.


      Корневой каталог содержит набор 32-битных записей информации о каждом файле, содержащих следующую информацию:

      • 8 байт – имя файла;
      • 3 байта – расширение файла;


      Корневой каталог содержит набор 32-битных записей информации о каждом файле, содержащих следующую информацию:

      • 8 байт – имя файла;
      • 3 байта – расширение файла;
      • 1 байт – атрибут файла:
      • 1 байт – зарезервирован;
      • 1 байт – время создания (миллисекунды) (число от 0 до 199);
      • 2 байта – время создания (с точностью до 2с):
      • 2 байта – дата создания:
      • 2 байта – дата последнего доступа;
      • 2 байта – старшие 2 байта начального кластера;
      • 2 байта – время последней модификации;
      • 2 байта – дата последней модификации;
      • 2 байта – младшие 2 байта начального кластера;
      • 4 байта – размер файла (в байтах).


      В случае работы с длинными именами файлов (включая русские имена) кодировка имени файла производится в системе кодировки UTF-16. При этого для кодирования каждого символа отводится 2 байта. При этом имя файла записывается в виде следующей структуры:

      • 1 байт последовательности;
      • 10 байт содержат младшие 5 символов имени файла;
      • 1 байт атрибут;
      • 1 байт резервный;
      • 1 байт – контрольная сумма имени DOS;
      • 12 байт содержат младшие 3 символа имени файла;
      • 2 байта – номер первого кластера;
      • остальные символы длинного имени.

      Далее следует запись, включающая имя файла в формате 8.3 в обычном формате.

      Работа с файлами в языке Си

      Для программиста открытый файл представляется как последовательность считываемых или записываемых данных. При открытии файла с ним связывается поток ввода-вывода . Выводимая информация записывается в поток, вводимая информация считывается из потока.

      Когда поток открывается для ввода-вывода, он связывается со стандартной структурой типа FILE , которая определена в stdio.h . Структура FILE содержит необходимую информацию о файле.

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

      • "r" — открыть файл для чтения (файл должен существовать);
      • "w" — открыть пустой файл для записи; если файл существует, то его содержимое теряется;
      • "a" — открыть файл для записи в конец (для добавления); файл создается, если он не существует;
      • "r+" — открыть файл для чтения и записи (файл должен существовать);
      • "w+" — открыть пустой файл для чтения и записи; если файл существует, то его содержимое теряется;
      • "a+" — открыть файл для чтения и дополнения, если файл не существует, то он создаётся.

      Функция fclose() закрывает поток или потоки, связанные с открытыми при помощи функции fopen() файлами. Закрываемый поток определяется аргументом функции fclose() .

      Возвращаемое значение: значение 0, если поток успешно закрыт; константа EOF , если произошла ошибка.

      Чтение символа из файла:


      Аргументом функции является указатель на поток типа FILE . Функция возвращает код считанного символа. Если достигнут конец файла или возникла ошибка, возвращается константа EOF .

      Запись символа в файл:

      Аргументами функции являются символ и указатель на поток типа FILE . Функция возвращает код считанного символа.

      Функции fscanf() и fprintf() аналогичны функциям scanf() и printf() , но работают с файлами данных, и имеют первый аргумент — указатель на файл.

      Функции fgets() и fputs() предназначены для ввода-вывода строк, они являются аналогами функций gets() и puts() для работы с файлами.


      Копирует строку в поток с текущей позиции. Завершающий нуль- символ не копируется.
      Пример Ввести число и сохранить его в файле s1.txt. Считать число из файла s1.txt, увеличить его на 3 и сохранить в файле s2.txt.

      Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные.

      Текстовыми называются файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конца строки». Конец самого файла обозначается символом «конца файла». При записи информации в текстовый файл, просмотреть который можно с помощью любого текстового редактора, все данные преобразуются к символьному типу и хранятся в символьном виде.

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

      Для работы с файлами используются специальные типы данных, называемые потоками. Поток ifstream служит для работы с файлами в режиме чтения, а ofstream в режиме записи. Для работы с файлами в режиме как записи, так и чтения служит поток fstream.

      В программах на C++ при работе с текстовыми файлами необходимо подключать библиотеки iostream и fstream.

      Для того чтобы записывать данные в текстовый файл, необходимо:

      1. описать переменную типа ofstream.
      2. открыть файл с помощью функции open.
      3. вывести информацию в файл.
      4. обязательно закрыть файл.

      Для считывания данных из текстового файла, необходимо:

      1. описать переменную типа ifstream.
      2. открыть файл с помощью функции open.
      3. считать информацию из файла, при считывании каждой порции данных необходимо проверять, достигнут ли конец файла.
      4. закрыть файл.

      Запись информации в текстовый файл

      Как было сказано ранее, для того чтобы начать работать с текстовым файлом, необходимо описать переменную типа ofstream. Например, так:

      ofstream F;

      Будет создана переменная F для записи информации в файл. На следующим этапе файл необходимо открыть для записи. В общем случае оператор открытия потока будет иметь вид:

      F.open(«file», mode);

      Здесь F — переменная, описанная как ofstream, file — полное имя файла на диске, mode — режим работы с открываемым файлом. Обратите внимание на то, что при указании полного имени файла нужно ставить двойной слеш. Для обращения, например к файлу accounts.txt, находящемуся в папке sites на диске D, в программе необходимо указать: D:\\sites\\accounts.txt.

      Файл может быть открыт в одном из следующих режимов:

      • ios::in — открыть файл в режиме чтения данных; режим является режимом по умолчанию для потоков ifstream;
      • ios::out — открыть файл в режиме записи данных (при этом информация о существующем файле уничтожается); режим является режимом по умолчанию для потоков ofstream;
      • ios::app — открыть файл в режиме записи данных в конец файла;
      • ios::ate — передвинуться в конец уже открытого файла;
      • ios::trunc — очистить файл, это же происходит в режиме ios::out;
      • ios::nocreate — не выполнять операцию открытия файла, если он не существует;
      • ios::noreplace — не открывать существующий файл.

      Параметр mode может отсутствовать, в этом случае файл открывается в режиме по умолчанию для данного потока.

      После удачного открытия файла (в любом режиме) в переменной F будет храниться true, в противном случае false. Это позволит проверить корректность операции открытия файла.

      Открыть файл (в качестве примера возьмем файл D:\\sites\\accounts.txt) в режиме записи можно одним из следующих способов:

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

      Если вы хотите открыть существующий файл в режиме дозаписи, то в качестве режима следует использовать значение ios::app.

      После открытия файла в режиме записи, в него можно писать точно так же, как и на экран, только вместо стандартного устройства вывода cout необходимо указать имя открытого файла.

      Например, для записи в поток F переменной a, оператор вывода будет иметь вид:

      Для последовательного вывода в поток G переменных b, c, d оператор вывода станет таким:

      Закрытие потока осуществляется с помощью оператора:

      F.close();

      В качестве примера рассмотрим следующую задачу.

      Задача 1

      Создать текстовый файл D:\\sites\\accounts.txt и записать в него n вещественных чисел.

      Решение

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31

      Чтение информации из текстового файла

      Для того чтобы прочитать информацию из текстового файла, необходимо описать переменную типа ifstream. После этого нужно открыть файл для чтения с помощью оператора open. Если переменную назвать F, то первые два оператора будут такими:

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

      Например, для чтения данных из потока F в переменную a, оператор ввода будет выглядеть так:

      Два числа в текстовом редакторе считаются разделенными, если между ними есть хотя бы один из символов: пробел, табуляция, символ конца строки. Хорошо, когда программисту заранее известно, сколько и какие значения хранятся в текстовом файле. Однако часто известен лишь тип значений, хранящихся в файле, при этом их количество может быть различным. Для решения данной проблемы необходимо считывать значения из файла поочередно, а перед каждым считыванием проверять, достигнут ли конец файла. А поможет сделать это функция F.eof(). Здесь F — имя потока функция возвращает логическое значение: true или false, в зависимости от того достигнут ли конец файла.

      Следовательно, цикл для чтения содержимого всего файла можно записать так:

      //организуем для чтения значений из файла, выполнение
      //цикла прервется, когда достигнем конец файла,
      //в этом случае F.eof() вернет истину
      while ( ! F. eof ( ) )
      <
      //чтение очередного значения из потока F в переменную a
      F >> a ;
      //далее идет обработка значения переменной a
      >

      Для лучшего усвоения материала рассмотрим задачу.

      Задача 2

      В текстовом файле D:\\game\\accounts.txt хранятся вещественные числа, вывести их на экран и вычислить их количество.

      Решение

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39

      На этом относительно объемный урок по текстовым файлам закончен. В следующей статье будут рассмотрены методы манипуляции, при помощи которых в C++ обрабатываются двоичные файлы.

      Читайте также: