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
"Непробуй!Делай. Илинеделай. Никаких попыток."(с) Йода
Будемразбираться...