- •Файловый
- •Класс – это описание множества объектов и выполняемых над ними действий
- •Наследование
- •Состояния потока описываются в классе ios в виде перечисления enum:
- •Проверить состояние потока можно
- •Работа с классом fstream
- •Задание нескольких режимов
- •Позиционирование с помощью функций
- •Возврат текущей позиции
- •Файловый ввод-вывод
- •создать файловый поток
- •Пример 2.
- •Работа с классом ofstream
- •Альтернативные функции
- •Пример использования класса ofstream
- •Работа с классом ifstream
- •1) Программа создает объект типа ofstream и выводит несколько строк текста в файл
- •файл A.DAT, читает его и отображает первые три элемента
- •4Программа читает файл по одному символу
- •5) Используется функция eof
- •6) Читается содержимое файла
- •Бинарный файл
- •(вместе с расширением) нужно ввести, читает из файла число и возводит его в
- •продолжение
- •окончание
- •вывода содержимого структуры с информацией о работнике (фамилия и имя,
- •функцию fail для проверки
1) Программа создает объект типа ofstream и выводит несколько строк текста в файл А.DAT
•#include <iostream>
•#include <fstream>
•using namespace std;
•void main(void)
•{
•ofstream prm1("A.DAT");
•prm1 << "Text1" << "Text2" << endl;
•prm1 << "Text3" << endl;
•prm1 << "Text4" << endl;
•}
файл A.DAT, читает его и отображает первые три элемента
•#include <iostream>
•#include <fstream>
•using namespace std;
•void main(void)
•{ ifstream prm2("A.DAT") ;
•char one[64], two[64], three[64];
•prm2>> one;
•prm2>> two;
•prm2>> three;
•cout << one << endl;
•cout << two << endl;
•cout << three << endl; }
|
функцию getline для чтения всех |
• |
трех строк файла A.DAT |
#include <iostream> |
|
• |
#include <fstream> |
• |
using namespace std; |
• |
void main(void) |
• |
{ifstream prm3("A.DAT"); |
• |
char one[64], two[64], three [64] ; |
• |
prm3.getline(one, sizeof(one)) ; |
• |
prm3.getline(two, sizeof(two)); |
• |
prm3.getline(three, sizeof(three)) ; |
• |
cout << one << endl; |
• |
cout << two << endl; |
• |
cout << three << endl; } |
4Программа читает файл по одному символу
за один раз, используя функцию get, пока не встретит конец файла
•#include <iostream>
•#include <fstream>
•using namespace std;
•void main(void)
•{ ifstream prm4("A.DAT");
•char letter;
•while (! prm4.eof())
•{
•letter = prm4.get();
•cout << letter;
•}
•}
5) Используется функция eof
для чтения содержимого файла
A.DAT
•#include <iostream>
•#include <fstream>
•using namespace std;
•void main(void)
•{ ifstream prm5("A.DAT");
•char line[64];
•while (! prm5.eof())
•{ prm5.getline(line, sizeof(line));
•cout << line << endl; } }
6) Читается содержимое файла
по одному слову за один раз
•#include <iostream>
•#include <fstream>
•using namespace std;
•void main(void)
•{ ifstream prm6("A.DAT");
•char word[64] ;
•while (! prm6.eof())
•{ prm6>> word;
•cout << word << endl; }
•}
Бинарный файл
•struct Block {…} b[2];…
•ofstream FILE;
•FILE.open(“B.dat”,ios::binary);
•for (int i=0;i<2;i++)
•FILE.write((char*)&b[i],
sizeof(b[i]));
•FILE.close();
(вместе с расширением) нужно ввести, читает из файла число и возводит его в квадрат.
Затем происходит запись результата вычислений в файл. Предварительно надо
#includeзаписать<iostream>число в исходный файл
#include <fstream> using namespace std;
double vvodf(ifstream &f, char s[40]) { double a; f.open (s);
if (f.fail()) {cout<<"\n Ошибка открытия файла";
exit(1); } //Проверка открытия
f>>a; //Чтение переменной f.close(); return a;
продолжение
•void vyvodf(ofstream &f, double a, char s[40])
•{ f.open(s);
•if (f.fail()) {cout<<"\n Ошибка открытия файла"; exit(1); }
•f<<a; //Запись переменной
•f.close(); }
окончание
•void main() { setlocale(LC_ALL,"Russian");
•double a, b; char str[40];
•ifstream f; ofstream f1;
•cout<<"\n Ввести имя файла для чтения A: \n";
•cin>>str;
•a=vvodf(f,str);
•cout<<"\n Прочитанное из файла число A="<<a;
•b=pow(a,2);
•cout<<"\n b="<<b;
•cout<<"\n Ввести имя файла для записи A: \n";
•cin>>str;