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



Лабораторная работа 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!