Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_2 часть_укр.doc
Скачиваний:
1
Добавлен:
09.11.2019
Размер:
938.5 Кб
Скачать

8.1.3. Текстові файли. Форматоване введення-виведення

Після того, як файл відкритий, з нього легко зчитати дані або записати нові текстові дані. Текстовий файл – це послідовність ASCII-символів, яка розділена на рядки. Для запису в текстовий файл і зчитування з файлу можна використати оператори << і >> так само, як це робиться для консольного введення-виведення. Необхідно тільки замінити потік cin або cout тим потоком, що пов'язаний з даним файлом. Вся інформація у файлі зберігається в тім же форматі, якби вона перебувала на екрані. Тому файл, створений за допомогою <<, являє собою файл із відформатованим текстом.

Пример запису рядка й числа в текстовий файл:

#include <iostream>

#include <fstream>

using namespace std;

int main(){

ofstream fout("test.txt"); //Створення файлу для виведення

if(!fout) { //Якщо не вийшло створення файлу

cout << " Can't open file\n";

return 1; }

fout << "Record to file\n"<<100<< endl; //Запис у файл

fout.close();//Закриття файлу

return 0; }

У результаті роботи цього коду в поточній директорії програми буде створений файл test.txt, що містить наступний текст:

Record to file

100

Приклад введення рядків із клавіатури й запису в файл. Програма завершується при введенні символу # як першого символу рядка (у цьому й наступному прикладах директиви на підключення бібліотек iostream і fstream опущені).

int main(){

ofstream fout("test.txt");

if(!fout) {

cout << " Can't open file\n";

return 1; }

char str[80];

cout << "Enter string/For ending enter #\n";

do {cout << ": ";

cin >> str;

fout << str << endl; //У потік виведення записати str

} while (*str!='#'); //Поки не введений символ #

fout.close();

return 0; }

Відмітимо, що при відкритті файлу в режимі виведення (ofstream) існуючий файл усікається до нуля. Щоб відкрити файл для запису, зберігши існуючий у ньому текст, використовується режим додавання в кінець файлу:

ofstream fout("test.txt", ios::app);

Приклад зчитування текстового файлу й виведення на екран:

int main(){

ifstream fin("test.txt"); //Відкриття файлу

if(!fin) { //Якщо файл не знайдений

cout << " Can't open file\n";

return 1;}

char ch;

fin.unsetf(ios::skipws); //Не пропускати пробіли

for (;;){

fin >> ch; //Запис символу з файлу в змінну ch

if (fin.eof()) break; //Якщо досягнуто кінець файлу

cout << ch; /*Виведення символу на екран*/ }

fin.close(); //Закриття файлу

return 0; }

Приклад копіювання файлів. Програма копіює файл file1 у файл file2 і підраховує число скопійованих символів.

int main(){

ifstream fin("file1.dat", ios::in);//Відкрити для введення

ofstream fout("file2.dat", ios::out);//Відкрити для виведення

if(!fin) { cout << "Can't open file1\n";

return 1; }

if(!fout) {cout << "Can't open file2\n";

return 1; }

char ch;

unsigned count = 0;

fin.unsetf(ios::skipws); //Не пропускати пробіли

for (;;){fin >> ch;

if (fin.eof()) break;

fout << ch;

count++; }

cout << "Number of copied bytes: " << count << '\n';

fin.close();

fout.close();

return 0; }