Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lect11.pdf
Скачиваний:
6
Добавлен:
06.02.2016
Размер:
378.65 Кб
Скачать

11. Потоки ввода/выводаС++

«Объектно-ориентированное программирование»

доцентПриваловМ.В.

Донецк,ДонНТУ,2011

Чтотакоепотокввода-вывода?

Потокэто специальный объект, свойства которогоопределяются классом

Выводэто запись данных в поток

Вводчтение данных из потока

Самыечасто используемые потоки - cin и cout.Это глобальные объекты, используемые для консольного вводавывода.

Дляудобства впотоковых классах переопределены операции << и>>

Иерархия основных потоков

ios

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

istream

 

 

ostream

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

istream_withassign

 

 

 

 

ostream_withassign

 

 

iostream

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

iostream_withassign

Основные потоки

extern istream_withassign cin;

extern ostream_withassign cout;

extern ostream_withassign cerr;

extern ostream_withassign clog;

Операции потокового ввода-вывода возвращают ссылку напоток, что позволяет использовать их так:

cout << c1 << c2 << … << cN;

Чтоподключить?

//Потоковый ввод-вывод

#include <iostream>

//Файловый ввод-вывод

#include <fstream>

//Форматирование в оперативной памяти

#include <strstream>

//Работа с манипуляторами

#include <iomanip>

//В устаревших компиляторах

#include <iostream.h>

//В современных компиляторах

#include <iostream>

Простейшееформатирование...

...или"где ты,любимый printf?"

Такбыло вСи: printf("%7.3f%7.3f", 1.5, 2.5);

Результат:

1.500 2.500

Акак сделать то же, новыводе впотокС++?

Ответ: использовать методы форматирования потока.

Простейшееформатирование...

...или"где ты,любимый printf?"

Методы форматирования ширины поля и точности

int ios::width();

int ios::width(int w); int ios::precision();

int ios::precision(int w);

Простейшееформатирование...

...или"где ты,любимый printf?"

Попробуем...

cout.width(7);

cout.precision(3);

cout << 1.5 << 2.5 << endl;

Результат(4 пробела, 1.5):

1.52.5

"Непробуй!Делай. Илинеделай. Никаких попыток."(с) Йода

Будемразбираться...

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]