Запись информации в текстовый файл
Лабораторная работа 1. Работа с текстовыми файлами в ОС Windows на языке С++ Цель работы: изучение методов работы с текстовыми файлами в ОС Windows на языке С++
Файлы и файловая система. Текстовые файлы
Почти вся информация в ЭВМ хранится в файлах – поименованных участках электронной памяти. Файловой системой называют порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах и других устройствах, использующих электронную память. Файловая система как система соглашений задает формат содержимого и способ физического хранения информации в файлах и каталогах.
Практически функции работы с файлами реализует отдельная подсистема (также называемая файловой системой), входящая в состав операционной системы. Такими функциями являются:
-создание файлов и присвоение им имен;
-создание каталогов (папок) и присвоение им имен;
-переименование файлов и каталогов (папок);
-копирование и перемещение файлов между дисками компьютера и между каталогами (папками) одного диска;
-удаление файлов и каталогов (папок);
-навигация по файловой структуре с целью доступа к заданному файлу, каталогу (папке);
-управление атрибутами файлов.
Рассмотрим работу с файлами в ОС Windows.Основными типами файловявляются: текстовые и двоичные.Вдвоичныхфайлах информация считывается и записывается в виде блоков определенного размера, в которых могут храниться данные любого вида и структуры.
|
|
Текстовыми называют файлы, в которых записана символьная информация. Как правило, она организованна в виде строк(англ.lines, rows).. В современных системах в конце строк стоят разделители строк. Обычно (в частности, вОС Windows ) – это признак окончания строки“/0”.
Если нет дополнительных управляющих символов, то новая строка начинается сразу же после окончания текущей.
Если использован управляющий символ“/n”, то новая строка начинается с физической новой строки.
Если задан символ табуляции “/t”, то новая строка начинается с заданной позиции в текущей строке.
Для хранения одиночных символов используются элементы типа char. Поэтому для формирования строки необходимо использовать массив таких элементов. Для обозначения окончания данного массива необходимо применять специальный управляющий символ '\0’.
В конце текстового файла стоит маркер конца файла. Текстовый файл может содержать как форматированный, так и неформатированный текст.
В DOS и ОСWindows для файлов с неформатированным текстом обычно используется расширение.txt.
Для ручной записи, редактирования и просмотра символьной информации в текстовых файлах, а также их создания, переименования и закрытия, удобнее всего использовать текстовый редактор Notepad.
|
|
Также текстовыми могут являться файлы с любым другим расширением или без него. Например, исходные коды программ обычно хранятся в файлах с расширениями, соответствующими языку программирования, на котором написаны программы (.bas, .pas, .c).
Форматированный текст (текст с разметкой) обычно хранится в файлах с расширением, соответствующим формату или языку разметки — .rtf, .htm, .html.
Функции работы с текстовыми файлами в ОС Windows. Запись информации в файл
Для работы с файлами используются специальные типы данных, называемые потоками. Поток ifstreamслужит для работы с файлами в режиме чтения, а ofstream в режиме записи. Для работы с файлами в режиме как записи, так и чтения служит поток fstream.
В программах на C++ при работе с текстовыми файлами необходимо подключать библиотеки iostream иfstream.
Для записи данных в текстовый файл необходимо:
1) описать переменную типа ofstream,
2) открыть файл с помощью функции open,
3) вывести информацию в файл,
4) обязательно закрыть файл.
Для считывания данных из текстового файла необходимо:
1) описать переменную типа ifstream,
2) открыть файл с помощью функции open,
|
|
3) считать информацию из файла, при считывании каждой порции данных необходимо проверять, достигнут ли конец файла,
4) закрыть файл.
Запись информации в текстовый файл
Как было сказано ранее, для того чтобы начать работать с текстовым файлом, необходимо описать переменную типа ofstream. Например, переменная с именем F для записи информации в файл будет создана следующей командой:
ofstream 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:\\text.txt) в режиме записи можно одним из следующих способов.
1.После открытия файла в режиме записи будет создан пустой файл, в который можно будет записывать информацию.
2.Если вы хотите открыть существующий файл в режиме дозаписи, то в качестве режима следует использовать значение ios::app.
3. После открытия файла в режиме записи, в него можно писать точно так же, как и на экран, только вместо стандартного устройства вывода cout необходимо указать имя открытого файла.
Например, для записи в поток Fпеременной a, оператор вывода будет иметь вид:
F<<a;
Для последовательного вывода в поток G переменных b, c, d оператор вывода станет таким:
G<<b<<c<<d;
Закрытие потока осуществляется с помощью оператора:
F.close();
Пример 1. Создать текстовый файл D:\\text1.txt и записать в него при помощи ввода с клавиатуры n вещественных чисел.Число n также вводится по запросу с клавиатуры. Каждое введенное число должно отображаться в режиме табуляции.
Решение
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
void main(){setlocale (LC_ALL, "RUS");
int i, n;
double a;
ofstreamf; //описаниепотокадлязаписиданныхвфайл
f.open("D:\\text1.txt", ios::out); //открытиефайлаврежимезаписи,
cout<<"n="; cin>>n; //вводколичествавещественныхчисел
for (i=0; i<n; i++){//циклдлявводавещественныхчиселизаписиихвфайл
cout<<"a="; //приглашениенавводчисласклавиатуры
cin>>a; //вводчисла
f<<a; //записьчиславфайл
f<<"\t"; //записьвфайлразделителя
}
f.close();//закрытиепотока
system("pause");
}
Задания. 1. Изменить текст программы таким образом, чтобы каждоевводимое в файл D:\\text1.txt число отображалось с новой строки.
2. Изменить текст программы таким образом, чтобы всевводимые в файл D:\\text1.txt числа отображались слитно без разрывов.
3. Изменить текст программы таким образом, чтобы каждый вводимый с клавиатуры символ записывался в файл D:\\text1.txt дважды.
4. Изменить текст программы таким образом, чтобы а) символы в файл D:\\text1.txt записывались бы слитно и б) между всеми вводимыми символами дополнительнозаписывался бы разделяющий символ “-” (минус).
Дата добавления: 2018-08-06; просмотров: 206; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!