172.00K
Category: programmingprogramming

Ввод/вывод и файловые операции. Лекция №18

1.

Лекция № 18
Ввод/вывод и
файловые операции

2.

printf и выходной поток cout
#include <stdio.h>
#include <conio.h>
int main(void)
{
printf("Print........");
getch(); return 0;
}
------------------------------------------------#include <conio.h>
#include <iostream>
using namespace std;
int main(void)
{
cout << "Print.......";
getch(); return 0;
}

3.

scanf и входной поток cin
#include <stdio.h>
#include <conio.h>
int main(void)
{
int a; scanf("%d",&a);
getch(); return 0;
}
------------------------------------------------#include <conio.h>
#include <iostream>
using namespace std;
int main(void)
{
int a; cin >> a;
getch(); return 0;
}

4.

Файл iostream.h
iostream.h содержит определения,
позволяющие использовать cout и cin
для выполнения ввода/вывода.
Данный файл определяет классы
istream и ostream
(входной поток и выходной поток),
cin и соut являются объектами этих классов.

5.

Выходной поток cout
cout << 1234; // << операция вставки
cout << 1 << 3 << 45 << 123;
cout << "Information..." << 1990;
cout << "Information..." << endl;
cout << "Oct = " << oct << 1540;
cout << "Year = "; cout.width(10); cout << 2015;
cout.fill('.');
cout << "Year = "; cout.width(10); cout << 2015;
cout << "Pi = "; cout.precision(3); cout << M_PI;

6.

Входной поток cin
cin >> a; // << операция извлечения (внесения)
cin >> a >> b >> c;
// чтение строки
char str[100];
cin.getline(str,sizeof(str));
cout << str;
// чтение строки до определенного символа
cin.getline(str,sizeof(str),'Q');
// чтение одного символа
cin.get(key);

7.

Зачем С++ cout и cin ?
struct point
{
int x, у, z;
};
// трехмерные координаты
Невозможно приспособить или расширить систему
ввода/вывода языка С для вывода данных типа point.
Используя подход С++ к вводу/выводу, можно
перегрузить операторы << и >> таким образом,
чтобы они знали, как работать с типом point.

8.

Создание оператора вставки
class point // трехмерные координаты
{
public:
int x, у, z;
point(int a, int b, int c)
{
x=a;
y=b;
z=c;
}
};

9.

Создание оператора вставки
Определим оператор <<
по отношению к классу point.
Выполняем перегрузку оператора <<.
ostream &operator << (ostream &stream, // левая
point obj)
// правая
// части
{
stream << obj.x << ", ";
stream << obj.у << ", ";
stream << obj.z << "\n";
return stream; // возврат потока
}

10.

Создание оператора вставки
#include <conio.h>
#include <iostream.h>
class point
{
public:
int x, y, z;
point(int a, int b, int c) { x=a; y=b; z=c; }
};
ostream &operator<<(ostream &stream, point obj)
{
stream << obj.x << ", ";
stream << obj.y << ", ";
stream << obj.z << "\n";
return stream; // возврат потока
}

11.

Создание оператора вставки
int main(void)
{
point
a(1, 2, 3),
b(3, 4, 5),
c(5, 6, 7);
cout << a << b << c;
getch();
return 0;
}

12.

Файл fstream.h
fstream.h определяет класс
выходного файлового потока с именем ofstream.
Сначала объявляется объект типа ofstream,
с указанием имени выходного файла.
ofstream file("C:\\1.txt");
Будет создан или перезаписан файл 1.txt

13.

Вывод в файл
#include <fstream.h>
int main(void)
{
ofstream file("C:\\1.txt");
file << "Data " << "program"<<'\n';
file << 1984;
file << 123.456;
return 0;
}

14.

Чтение из файла
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
int main(void)
{
ifstream input_file("c:\\data.txt") ;
int k,a,s=0;;
for (k=1; k<=10; k++)
{
input_file >> a; cout<<a<<' '; s+=a;
}
cout << "Sum = " << s;
getch();
return 0;
}

15.

Чтение из файла целой строки
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
int main(void)
{
ifstream input_file("c:\\DEV-CPP\\main.cpp") ;
int k;
char str[128];
for (k=1; k<=10; k++)
{
input_file.getline(str,sizeof(str));
cout << str << endl;
}
getch();
return 0;
}

16.

Определение конца файла
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
int main(void)
{
ifstream input_file("c:\\DEV-CPP\\main.cpp") ;
int k;
char str[128];
while (! input_file.eof())
{
input_file.getline(str, sizeof(str));
cout << str << endl;
}
getch(); return 0;
}

17.

Проверка ошибок
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
int main(void)
{
ifstream input_file("c:\\DEV-CPP\\main22.cpp");
int k;
char str[128];
if (input_file.fail())
{
cout << "File error......." << endl;
getch(); exit(1);
}
getch(); return 0;
}

18.

Управление открытием файла
ifstream output_file("FILENAME.EXT",
ios::значение);
ios::app Режим добавления, указатель в конце файла.
ios::in
Открытие файла для ввода.
ios::nocreate Если указанный файл не существует, не
создавать файл и возвратить ошибку.
ios::noreplace Если файл существует, операция открытия
должна быть прервана и должна возвратить ошибку.
ios::out
Открытие файла для вывода.
ios::trunc Перезаписывает содержимое существующего файла.
ifstream output_file("C:\\1.txt",
ios::out | ios::noreplace);

19.

Работа с массивами и структурами
Функции read и write
input_file.read(buffer, sizeof(buffer));
output_file.write(buffer, sizeof(buffer));
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
int main(void)
{
struct student
{
char name[64];
int age;
} ST = { "Ivanov P.S.", 33}, ST1;

20.

Работа с массивами и структурами
ofstream file("C:\\1.txt") ;
file.write((char *) &ST, sizeof(ST));
file.close();
ifstream file1("C:\\1.txt");
file1.read((char *) &ST1, sizeof(ST1));
cout << ST1.name << endl;
cout << ST1.age << endl;
getch();
return 0;
}
English     Русский Rules