Библиотека ввода/вывода С++

Содержание

Слайд 2

6.1 Стандартные потоки ios streambuf istream ostream iostream ifstream ofstream fstream

6.1 Стандартные потоки

ios

streambuf

istream

ostream

iostream

ifstream

ofstream

fstream

Стандартные потоки:
cin, cout, clog, cerr

Слайд 3

Библиотека ввода/вывода С++ (2) Операции ввода/вывода делятся на две группы: а)

Библиотека ввода/вывода С++ (2)

Операции ввода/вывода делятся на две группы:
а) операции с

преобразованием из внутреннего формата в символьный – осуществляется переопределенными “<<“ и “>>”;
б) операции без преобразования – осуществляется специальными функциями.
Слайд 4

6.2 Операции «извлечение» и «вставка» Операции переопределены для: char, signed и

6.2 Операции «извлечение» и «вставка»

Операции переопределены для:
char, signed и unsigned short,

int, long, float, double, long double, char *(строка), void *(адрес)
Примеры:
а) cout<<“Input integer:”;
б) cin>>a;
в) cout<<2+a+8;
г) сout<<“String:”<д) сout<<(a<<2);
е) cout<<(a=2);
Слайд 5

6.3 Управление потоками ввода/вывода Форматирование ввода/вывода. Флаги enum { skipws =

6.3 Управление потоками ввода/вывода Форматирование ввода/вывода. Флаги

enum
{ skipws = 0x0001,// пропустить

пробелы при вводе
left = 0x0002,// выполнять по левой гр. при выводе
rigth = 0x0004,// выполнять по правой гр. при выводе
interval=0x0008,// дополнить пробелами при выводе
dec = 0x0010,// преобразовать в десятичную с/с
oct = 0x0020,// преобразовать в восьмиричную с/с
hex = 0x0040,// преобразовать в шестнадцатир. с/с
showbase=0x0080,// показывать основание с/с при выводе
showpoint=0x0100,// показывать дес. точку при выводе
uppercase=0x0200,// вывод шестн. цифр в верхнем р-ре
showpos = 0x0400,// выводить + перед полож. числами
sientific=0x0800,// вывод в формате с плав. точкой
fixed = 0x1000,// вывод в формате с фикс. точкой
unitbuf = 0x2000,// стереть все потоки после вставки
stdio = 0x4000};//стереть после вставки stdin,stdout
Слайд 6

Флаги (2) Флаги объявлены в классе ios: class ios {private: long

Флаги (2)

Флаги объявлены в классе ios:
class ios
{private:
long x_flags; // флаги

int x_width; // ширина поля вывода
int x_precision; // число цифр др. части
int x_fill; …} // символ-заполнитель
Для работы с этими полями используются специальные методы:
flags(), precision(), setf(), width()
Пример:
cout.setf(ios::uppercase);
cout.setf(ios::hex,ios::dec&oct&hex);
Слайд 7

6.4 Манипуляторы 1) Манипуляторы без параметров (iostream.h): ostream & (ostream &

6.4 Манипуляторы

1) Манипуляторы без параметров (iostream.h):
ostream & <Имя> (ostream & Os)
dec

– десятичная система счисления;
hex – шестнадцатеричная система счисления;
oct – восьмеричная система счисления;
ws – удаление из входного потока пробелов и знаков табуляции;
endl – добавление маркера «конец строки» + вывод из буфера;
flush – вывод из буфера.
2) Манипуляторы с параметрами (iomanip.h):
setbase(int n) – установка системы счисления (0, 8, 10, 16);
setprecision(int n) – определяет количество дробных цифр;
setw(int n) – определяет минимальную ширину поля вывода.
Пример:
cout<
Слайд 8

6.5 Переопределение извлечения и вставки для типов пользователя Переопределяются как функции-операции

6.5 Переопределение извлечения и вставки для типов пользователя

Переопределяются как функции-операции (т.е.

вне класса) :
ostream & operator<<(ostream &out,<Тип> <Имя>)
{ ...
out<<...
return out;
}
istream & operator>>(istream &in,<Тип> &<Имя>)
{ ...
in>>...
return in;
}
Слайд 9

Пример переопределения извлечения и вставки (Ex5_15) #include "stdafx.h" #include #include class

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

#include "stdafx.h"
#include
#include
class

TVector
{ private: int x,y,z;
public: TVector() {}
friend ostream& operator<<(ostream &stream,
TVector obj);
friend istream& operator>>(istream &stream,
TVector& obj);
};
Слайд 10

Пример переопределения извлечения и вставки ostream& operator { stream stream stream

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

ostream& operator<<(ostream &stream,TVector obj)
{ stream << "Value :";
stream

<< setw(5)<< obj.x<<", "<< obj.y;
stream << ", " << obj.z << "\n";
return stream;
}
istream& operator>>(istream &stream, TVector& obj)
{ cout<<"Input value:";
return stream >> obj.x >> obj.y >> obj.z;
}