Добавил:
t.me Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 семестр / Работа с текстовыми файлами.pptx
Скачиваний:
4
Добавлен:
26.02.2023
Размер:
116.69 Кб
Скачать

Пояснения 2

Далее открывается файл для чтения в текстовом режиме. ifstream fin(filename);

Поскольку в задаче не требуется разбирать и анализировать содержимое текстового файла, самый простой способ прочитать его - посимвольно. При этом используется не операция >>, а функция посимвольного ввода get(char&)).

Это связано с тем, что операция >> игнорирует пробельные (служебные) символы, а функция get(char&) считывает и сохраняет в параметре любой символ, даже если это пробел, символ табуляции или символ новой строки.

При этом, если считан символ, то функция возвращает значение true, при

достижении конца файла функция возвратит значение false. Это позволяет использовать вызов в условии цикла

while(fin.get(ch)) cout<<ch;

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

#include <iostream> #include <fstream> #include <stdlib.h> using namespace std; int main() {

ifstream fin;// файловая переменная

long count;//переменная для подсчета символов в файле char ch;

fin.open("my1.txt");//связь с физическим файлом if (!fin){

cout<<" not open file "<< "my1.txt" << endl; exit(1);}

count = 0;

while (fin.get(ch)) count++;

cout<<count<< " in "<< "me1.txt"<<"\n"; fin.close();

return 0;}

ПОЯСНЕНИЯ:

Функция exit(1) приводит к нормальному завершению программы.

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

Для работы с файлами в программе создана переменная типа ifstream. В отличие от предыдущего примера, созданный объект не связан ни с каким файлом. Для связи и открытия файла в нужном режиме используется метод open(): fin.open( имя файла);

Считывание файла идет посимвольно и вычисляется общее количество символов.

Пример6 . Написать программу, выполняющую несколько способов

обработки текстовых файлов (вывод содержимого на экран void echoFile , создание копии файла copyTextFile), которые реализованы в виде функций. Для выбора программы используется меню.

#include <iostream> #include <fstream> #include <stdlib.h> using namespace std;

//Функция вывода любого текстового файла на экран пример уже был void echoFile (char* fileName) {

ifstream inFile(fileName); if (!inFile) {

cout<<"Can't open "<<fileName<<"\n"; exit(1) ;

}

char c;

while (inFile.get(c)) cout<<c; cout<<endl; inFile.close();

}

Эти функции были рассмотрены раньше в других примерах

//функция копирование файла

void copyTextFile(char* inName, char* outName) { char c;

ifstream inFile(inName); if (! inFile) {

cout<<"Can't open "<<inName<<"\n"; exit(2) ;

}

//функция вывода ofstream outFile(outName); while (inFile.get(c)) outFile<<c;

inFile.close();

outFile.close();}

//Главная функция

 

int main() {

 

char n, name[20],name1[20];

//для имен файла

do {

//реализация меню

cout<<"1. Echo text file \n";

 

cout<<"2. Copy text file \n";

 

cin>>n;

 

if ((n>'0')&&(n<‘3')) {

// ввод выбора

switch (n) {

 

case '1':

 

cout<<"File name ->";

 

cin>>name;

 

echoFile (name);

 

break;

 

case '2':

//ввод имен исходного файла и для копирования

cout<<"File name ->";

 

cin>>name;

 

cout<<"Copy name ->";

 

cin>>name1;

 

copyTextFile(name,name1);

//вызов функции копирования файлов

echoFile(name1);

//печать результата копирования

break;

 

default:{

 

cout<<"Error number \n";

 

}

 

}

 

}}

 

while (n!=‘3’);

// конец цикла do

return 0;

 

}

 

Пояснения

Приведенные в программе функции void echoFile (char* fileName)

void copyTextFile(char* inName, char* outName)организованы так же, как и в предыдущих примерах. Входными параметрами для них являются имена файлов.