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

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

Читайте также:
  1. g. Если работает на табачном проекте, в первую очередь спрашиваем, курит ли человек
  2. I. Историческая работа сообразно её материалам
  3. II. Групповая работа
  4. II. Историческая работа сообразно её формам 1 страница
  5. II. Историческая работа сообразно её формам 2 страница
  6. II. Историческая работа сообразно её формам 3 страница
  7. II. Историческая работа сообразно её формам 4 страница

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

¨ open() — открывает файл для чтения из него информации;

¨ is_open () — возвращает true, если файл открыт, и false — в противном случае;

¨ get() — читает из файла один символ;

¨ read() — читает из файла заданное число символов;

¨ eof() — возвращает ненулевое значение, когда указатель позиционирования достигает конца файла;

¨ peek() — выдает очередной символ потока, но не выбирает его (не сдвигает указатель позиционирования данного в файле);

¨ seekg() — перемещает указатель позиционирования в заданное место файла;

¨ tellg() — выдает текущее значение указателя позиционирования;

¨ close() — закрывает файл;

¨ rdbuf() — выдает указатель на буфер ввода (этот буфер находится в структуре, с которой связывается файл при его открытии).

Пример использования класса приведен в листинге 9.12.

Листинг 9.12

#include <fstream>

ifstream FILE; /*объявляем переменную FILE типа ifstream (создаем экземпляр класса) */

char р[100];

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

if(FILE ==NULL) return(0); //неудачное открытие файла

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

{

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

cout << р << endl; //вывод прочитанных данных на экран

}

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

В листинге 9.13 приведен пример использования обоих классов: ofstream, ifstream (оба находятся в fstream), результат работы программы показан на рис. 9.9.

Листинг 9.13

// З9.срр: Defines the entry point for the console application.

#include "stdafx.h"

#include <iostream>

#include <fstream>

#include <conio.h>

#define DelKey 's' //этот символ будет удаляться из потока

#define maxline 1000

int _tmain(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; endl вводить не надо, иначе цикл будет длиннее*/

FILE.close();

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

ifstream FILE1;

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

FILEl.seekg(0); /*указатель — в начало(он и так будет в начале, но это, чтобы посмотреть, как работает seekg())*/

if(FILE1 == NULL) //так надо проверять на ошибку открытия файла

return(0);

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

{

FILE1 >> р >> i;

cout << p << i << endl;

}

FILEl.close();

_getch();

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

ifstream FILE2;

char с;

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

if(FILE2 == NULL) //так проверять на плохое открытие

return(0);

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

{

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

streamoff cgp=FILE2.tellg(); /*так определяется текущая позиция в файле*/

if (c==DelKey) /*выбрасываются все символы DelKey из читаемого потока*/

{

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

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

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

}

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

cout << с;

} //while

cout << endl;

FILE2.close();

_getch();

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

}//_tmain()

Рис. 9.9. Результат работы программы листинга 9.13


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


Читайте в этой же книге: Функции стандартного ввода/вывода | Примечание | Пространства имен | Примечание |
<== предыдущая страница | следующая страница ==>
Работа с классом fstream| Работа с бинарным файлом

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