12 Библиотека ввода/вывода С++
12.1 Стандартные потоки
Стандартные потоки:
cin, cout, clog, cerr
ios
istream

streambuf
ostream

iostream
ifstream

ofstream
fstream

1

Библиотека ввода/вывода С++ (2)
Операции ввода/вывода делятся на две группы:
а) операции с преобразованием из внутреннего
формата в символьный – осуществляется
переопределенными “”;
б) операции без преобразования – осуществляется
специальными функциями.

2

12.2 Операции «извлечение» и «вставка»
Операции переопределены для:
char, signed и unsigned short, int, long, float, double,
long double, char *(строка), void *(адрес)
Примеры:
а) couta;
в) cout
12.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,// стереть все потоки после вставки
4
stdio
= 0x4000};//стереть после вставки stdin,stdout

Флаги (2)
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);
5

6.4 Манипуляторы
1) Манипуляторы без параметров (iosream.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
12.5 Переопределение извлечения и вставки
для типов пользователя
Переопределяются как функции -операции вне класса :
ostream & operator...
return in;
}
7

Пример переопределения извлечения и
вставки (Ex5_15)
#include "stdafx.h"
#include
#include
class TVector
{ private: int x,y,z;
public:

TVector() {}

friend ostream& operator(istream &stream,
TVector& obj);
};
8

Пример переопределения извлечения и вставки
ostream& operator
Тестирующая программа
int main(int argc, char* argv[])
{ TVector A,B;
cin>>A>>B;
cout





Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.