Файли. Строки. Обробка виключень

Содержание

Слайд 2

Визначення Файлом називають спосіб зберігання інформації на фізичному пристрої. Файл -

Визначення

Файлом називають спосіб зберігання інформації на фізичному пристрої. Файл - це

поняття, яке може бути застосовано до всього - від файлу на диску до терміналу.
У C ++ відсутні оператори для роботи з файлами. Всі необхідні дії виконуються за допомогою функцій, включених в стандартну бібліотеку. Вони дозволяють працювати з різними пристроями, такими, як диски, принтер, комунікаційні канали і т.д. Ці пристрої сильно відрізняються один від одного. Однак файлова система перетворює їх в єдиний абстрактний логічний пристрій, який називається потоком.
Текстовий потік - це послідовність символів. При передачі символів з потоку на екран, частина з них не виводиться (наприклад, символ повернення каретки, переведення рядка).
Двійковий потік - це послідовність байтів, які однозначно відповідають тому, що знаходиться на зовнішньому пристрої.
Слайд 3

Файловий ввід-вивід з використанням потоків Бібліотека потокового введення-виведення Зв'язок файлу з

Файловий ввід-вивід з використанням потоків

Бібліотека потокового введення-виведення
Зв'язок файлу з потоком виведення
Зв'язок

файлу з потоком введення
Відкриття файлу
Закриття файлу

#include

ofstream <ім'я логічного файлу>;

ifstream <ім'я логічного файлу>;

<ім'я логічного файла>.open(<ім'я фізичної файлу>);

<ім'я логічного файла>.close();

Слайд 4

Приклад 1. Заповнити файл значеннями функції y = x * cos

Приклад 1. Заповнити файл значеннями функції y = x * cos

x.

#include
void main(){
double a, b, h, x; char s[20];
cout << "Enter the beginning and end of the segment, step: ";
cin >> a >> b >> h;
cout << "File name? "; cin >> s;
ofstream f;
f.open(s);
for (x = a; x <= b; x += h){
f << x;
f <<" "<< fun(x) << endl;
}
f.close();
system("PAUSE");
}
double fun(double x){
return x*cos(x);
}

Слайд 5

Режими відкриття файлів ofstream fout("cppstudio.txt", ios_base::app); // відкриваємо файл для додавання

Режими відкриття файлів

ofstream fout("cppstudio.txt", ios_base::app);
// відкриваємо файл для додавання інформації

до кінця файлу
fout.open("cppstudio.txt", ios_base::app);
// відкриваємо файл для додавання інформації до кінця файлу
Слайд 6

Основні методи ifstream

Основні методи ifstream

Слайд 7

Основні методи ofstream

Основні методи ofstream

Слайд 8

Приклад 2. У заданому файлі цілих чисел підрахувати кількість компонент, кратних

Приклад 2. У заданому файлі цілих чисел підрахувати кількість компонент, кратних

3.

void main(){
int r, ch;
ifstream f;
f.open("CH_Z.TXT");
ch = 0;
for (; f.peek() != EOF;){
f >> r;
cout << r << " ";
if (r % 3 == 0) ch++;
}
f.close();
cout << endl << "Answer: " << ch;
system("PAUSE");
}

Слайд 9

Основні функції заголовочного файлу cstdio

Основні функції заголовочного файлу cstdio

Слайд 10

Тип Доступу "r" відкрити файл для читання.(Цей файл повинен існувати). "w"

Тип Доступу

"r" відкрити файл для читання.(Цей файл повинен існувати).
"w" відкрити

порожній файл для; якщо цей файл раніше існував, його зміст видаляється
"a" відкрити файл для запису (додавання) в кінець. Якщо даного файлу не існує, він спочатку створюється.
"r+" відкрити файл одночасно для читання та запису. Файл повинен існувати.
"w+" відкрити порожній файл для читання та запису. Якщо цей файл раніше існував, його зміст видаляється
"a+" відкрити файл для читання та додавання. Якщо даного файлу не існує, він спочатку створюється.
Слайд 11

Спосіб перетворення символу нової строчки ”t” відкрити в текстовому (перетворюючому) режимі;

Спосіб перетворення символу нової строчки

”t” відкрити в текстовому (перетворюючому) режимі; при

введені комбінація “Повернення каретки - переведення строки" перетворюється до єдиного символу "переведення строки". При виводі символ переведення строки перетворюється в комбінацію ВК-ПС.
“в” відкрити в двоїчному (не перетворюючому) режимі; вище згадані перетворення не здійснюються.
Слайд 12

Приклад 3. Скопіювати дані з одного файлу в інший void main()

Приклад 3. Скопіювати дані з одного файлу в інший

void main() {
FILE

*in, *out;
char f1[] = "INPUT.TXT";
char f2[] = "OUTPUT.TXT";
in = fopen(f1, "rt");
out = fopen(f2, "wt");
while (!feof(in))
fputc(fgetc(in), out);
fclose(in);
fclose(out);
}
Слайд 13

Обробка винятків в C ++ try (намагатися) - початок блоку винятків;

Обробка винятків в C ++

try (намагатися) - початок блоку винятків;
catch (зловити)

- початок блоку, "ловить" виключення;
throw (кинути) - ключове слово, що "створює" ("збуджує") виняток.
Слайд 14

Приклад 4. Простий приклад обробки винятків void func(){ try{ throw 1;

Приклад 4. Простий приклад обробки винятків

void func(){
try{
throw 1;
}
catch (int a){
cout <<

"Caught exception number: " << a << endl;
return;
}
cout << "No exception detected!" << endl;
return;
}
Слайд 15

Приклад 5. Скопіювати дані з одного файлу в інший, якщо файл

Приклад 5. Скопіювати дані з одного файлу в інший, якщо файл

існує

FILE *safe_fopen(char const *path, char const *mode){
FILE *f = fopen(path, mode);
if (f == NULL)
throw "file not found";
return f;
}

Слайд 16

int main() { FILE *in, *out; char f1[] = "INPUT2.TXT"; char

int main() {
FILE *in, *out;
char f1[] = "INPUT2.TXT";
char f2[] = "OUTPUT.TXT";
try

{
in = safe_fopen(f1, "rt");
}
catch(char *a){
cout << a; return 0;
}
try {
out = safe_fopen(f2, "wt");
}
catch(char *a){
cout << a; return 0;
}
while (!feof(in))
fputc(fgetc(in), out);
fclose(in);
fclose(out);
system("PAUSE");
return 0;
}
Слайд 17

Стандартні функції опрацювання масивів символів (String.h) strlen( ) - визначає фактичну

Стандартні функції опрацювання масивів символів (String.h)

strlen(<рядок>) - визначає фактичну кількість символів

у рядку, застосовується у виразах;
strcat(r1,r2) - команда з'єднання рядків r1, r2 в один рядок, результат присвоює змінній r1;
strncat(r1, r2, n) - до змінної r1 додає перших n символів рядка r2;
strcpy(r1, r2) - копіює символи з рядка r2 в рядок r1;
strncpy(r1, r2, n) - копіює перших n символів рядка r2 в рядок r1;
strchr(r1, <символ>) - визначає перше входження деякого символу у рядок r1 так: повертає рядок, який починається від першого входження заданого символу до кінця рядка r1, застосовується у виразах;
strrchr(r1, <символ>) - визначає останнє входження заданого символу у рядок, застосовується у виразах;