Similar presentations:
Ввод/вывод и файловые операции. Лекция №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.hiostream.h содержит определения,
позволяющие использовать cout и cin
для выполнения ввода/вывода.
Данный файл определяет классы
istream и ostream
(входной поток и выходной поток),
cin и соut являются объектами этих классов.
5.
Выходной поток coutcout << 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.
Входной поток cincin >> 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.hfstream.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;
}