Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Робота з класом ifstream

Читайте также:
  1. Батогами. Одначе робота ця забрала не всі її думки: дівчина стиха
  2. Бесіда про Україну. Робота з картою.
  3. Гідравлічна система. Робота насоса на гідравлічну мережу
  4. І. Робота з поштою
  5. ІНДИВІДУАЛЬНА РОБОТА
  6. Лабораторна робота 10
  7. Лабораторна робота 11

Клас ifstream призначений для організації робіт по введенню (читання) з файлу за допомогою методів цього класу:

- open () - відкриває файл для читання з нього інформації;

- is_open () - повертає true, якщо файл відкритий, і false - у протилежному випадку;

- get () - читає з файлу один символ;

- read () - читає з файлу задане число символів;

- eof () - повертає ненульове значення, коли покажчик позиціонування в файлі досягає кінця файлу;

- peek () - видає черговий символ потоку, але не вибирає його (не зрушує покажчик позиціонування даного в файлі);

- seekg () - переміщає покажчик позиціонування в задане місце

файлу;

- tellg () - видає поточне значення покажчика позиціонування;

- close () - закриває файл;

- rdbuf () - видає покажчик на буфер введення (цей буфер знаходиться в структурі, з якою пов'язується файл при його відкритті).

Приклад використання класу приведений в лістингу 11.

Лістинг 11

ifstream FILE; /* оголошуємо змінну FILE типу ifstream (створюємо екземпляр класу) */

char p [100];

FILE.open ("a.txt"); // викликаємо метод відкриття файлу

if (FILE == NULL) return (0); // невдале відкриття файлу

while (! FILE.eof ()) // перевірка на ознаку кінця файлу

{

FILE >> p; // читання з файлу

cout << p << endl; // вивід прочитаних даних на екран

}

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

Наведемо програму роботи з файлами введення / виводу (лістинг 12).

Лістинг 12

# Include <vcl.h>

# Include <iostream>

# Include <fstream>

# Include <conio.h>

# Define DelKey 's' / / цей символ буде віддалятися з потоку

# Define maxline 1000

// ------------------------------------------------ -------------------- # pragma argsused

int main (int argc, char * argv [])

{

using namespace std; // використовується стандартне простір імен

// Перевірка виведення

ofstream FILE;

FILE.open ("c: \\ a.txt", ios:: out);

char p [maxline];

int i, pos;

for (i = 0; i <2; i + +)

FILE << "string" << i; /* в даному випадку "<< endl" вводити не треба, інакше його потрібно виводити, і цикл буде довший */

FILE.close ();

// Перевірка введення (читання по записах)

ifstream FILE1;

FILE1.open ("c: \ \ a.txt");

FILE1.seekg (0); /* переміщає покажчик у початок (при відкритті він і так буде на початку, але це просто для демонстрації роботи функції seekg ()) */

if (FILE1 == NULL) / / перевірка на помилку відкриття файлу

return (0);

while (! FILE1.eof ()) // перевірка кінця файлу

{

FILE1 >> p >> i;

cout << p << i << endl;

}

FILE1.close ();

getch ();

// Перевірка посимвольного читання

ifstream FILE2;

char c;

FILE2.open ("c: \ \ a.txt");

if (FILE2 == NULL) // перевірка на помилку відкриття файлу

return (0);

while (! FILE2.eof ()) // перевірка кінця файлу

{

c = FILE2.peek (); /* буде лічений наступний символ, але покажчик позиціонування при цьому не зрушується: залишається на цьому символі */

streampos cgp = FILE2.tellg (); /* визначається поточна позиція у файлі */

if (c == DelKey) /* викидаються всі символи DelKey з читаного потоку */

{

pos = cgp + 1; // готуємося пропустити символ по seekg ()

FILE2.seekg (pos); /* пересунули покажчик позиціонування на один символ далі, щоб пропустити символ */

continue; // на продовження циклу

}

FILE2.get (c); // читання символу в с

cout << c;

} // While

cout << endl;

FILE2.close ();

getch ();

system ("DEL C: \ \ A.TXT"); // видалення робочого файлу

} // Main ()


Дата добавления: 2015-07-10; просмотров: 100 | Нарушение авторских прав


Читайте в этой же книге: Мероприятия по коррекции агрессии в подростковом возрасте | Анализ проявлений различных форм агрессивности у подростков 10-15 лет | Анализ проявлений различных форм агрессивности у подростков из семей учителей, врачей, инженеров | Опросник уровня агрессивности Басса - Дарки | Опросник | Введення/виведення файлів | Функції для роботи з файлами | Приклад зі списком роззсилки | Функції стандартного введення/виведення | Лістинг 5 |
<== предыдущая страница | следующая страница ==>
Загальні положення| Робота з бінарним файлом

mybiblioteka.su - 2015-2024 год. (0.005 сек.)