русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Void main()


Дата додавання: 2014-11-28; переглядів: 746.


{ double x,y;

ifstream fa("A.dat");

ofstream fb("B.dat");

for (;;) { fa >> x >> y;// із файла fa зчитуються // послідовно x,y

if (fa.eof()) break;

fb << x << " " << y << endl;

// у файл fb записуються значення x, рядок // пробілів, y, символ EOL

}

}

 

Читання й запис окремих символів

Посимвольне читання й запис може здійснюватися функціями потоків get та put, які мають по кілька модифікацій. Нижче наведений приклад програми, що виводить на екран текстовий файл, заданий у командному рядку.

 

// Приклад 2

#include <fstream.h>

#include <syst.h>

void main(int N, char** fnam)

{ ifstream fs(fnam[1]);

if (fs==0) { puts("Файл не знайдений!"); exit(0); }

while (!fs.eof())

cout << (char)fs.get();

// зчитування з файлу і виведення на екран // наступного символу

}

 

У цій програмі для контролю досягнення кінця файлу використана функція ifstream::eof(). У зв'язку з тим, що функція ifstream::get() повертає значення типу int, у програмі застосовано операцію перетворення типу (char).

Якщо зв'язування потоку fs з файлом fnam[1] не закінчилося успішно, потокова змінна fs одержує значення NULL. Це дає можливість здійснювати контроль успішності відкриття файлу.

Замість функції ifstream::get() можна застосувати функцію ifstream::get(x), вона добутий символ привласнює змінній x. Передостанній рядок програми у такому разі запишеться таким чином:

while (!fs.eof()) { fs.get(x); cout<<x; }

Розглянемо приклад програми, яка копіює інформацію з одного файлу в іншій. Для запуску програми використовується командний рядок з параметрами. Через них передаються імена вхідного і вихідного файлів. Якщо ім'я файлу-приймача в командному рядку не зазначено, інформація копіюється на екран.

 

// Приклад 3

#include <fstream.h>

void main(int N, char** f)

{ char x;

ifstream fa(f[1]);

if (N==2) while (fa.get(x)) cout<<x;

if (N==3) { ofstream fb(f[2]);

while (fa.get(x)) fb.put(x); }

}

У цій програмі застосована така властивість функції ifstream::get(x): якщо читання символу не завершується успішно (наприклад, коли файл уже прочитаний до кінця), вона повертає значення 0. Це застосовано для контролю завершення циклу while.

 

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

Для читання й запису рядка символів заданої довжини передбачені функції потоків ifstream::getline(s, len, els) і ofstream::write(s, len). Параметри функцій: s - ім'я об'єкта-приймача або об'єкта-джерела, len - кількість символів, що передаються, els - символ кінця рядка (його можна не вказувати, по умовчанню він є символом '\n').

Нижче наводиться приклад програми, що копіює текстовий файл, вказаний у командному рядку, на екран із застосуванням функції зчитування рядка ifstream::getline.

 

// Приклад 4

#include <fstream.h>

void main(int N, char** fnam)

{ ifstream fs(fnam[1]);

char buf[255];

while (!fs.eof()) { fs.getline(buf,sizeof(buf));

cout << buf << endl;

}

}

 

Якщо потрібно прочитати з потоку рядок і відправити його не в масив типу char, а привласнити змінній типу string, можна скористатися функцією getline з модуля <syst.h>. Ознайомтесь з програмою, яка копіює вміст текстового файлу-потоку на екран. У програмі використана функція getline з модуля syst.h . Якщо досягнуто кінець файлу, ця функція повертає 0 (false).

 

// Приклад 5

#include <syst.h>


<== попередня лекція | наступна лекція ==>
Застосування потоків | Void main()


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн