Форматированный Вывод

Пока << применялась только для неформатированного вывода, и на самом деле в реальных программах она именно для этого главным образом и применяется. Помимо этого существует также несколько форматирующих функций, создающих представление своего параметра в виде строки, которая используется для вывода. Их второй (необязательный) параметр указывает, сколько символьных позиций должно использоваться.

char* oct(long, int =0); // восьмеричное представление char* dec(long, int =0); // десятичное представление char* hex(long, int =0); // шестнадцатиричное представление char* chr(int, int =0); // символ char* str(char*, int =0); // строка

Если не задано поле нулевой длины, то будет производиться усечение или дополнение; иначе будет использоваться столько символов (ровно), сколько нужно. Например:

cout << "dec(" << x << ") = oct(" << oct(x,6) << ") = hex(" << hex(x,4) << ")";

Если x==15, то в результате получится:

dec(15) = oct(17) = hex(f);

Можно также использовать строку в общем формате:

char* form(char* format...); cout<

Виртуальная Функция Вывода

Иногда функция вывода должна быть virtual. Рассмотрим пример класса shape, который дает понятие фигуры (#1.18):

class shape { //... public: //... virtual void draw(ostream& s); // рисует "this" на "s" }; class circle: public shape { int radius; public: //... void draw(ostream&); };

То есть, круг имеет все признаки фигуры и может обрабатываться как фигура, но имеет также и некоторые специальные свойства, которые должны учитываться при его обработке.

Чтобы поддерживать для таких классов стандартную парадигму вывода, операция << определяется так:

ostream& operator<<(ostream& s, shape* p) { p->draw(s); return s; }

Если next - итератор типа определенного в #7.3.3, то список фигур распечатывается например так:

while (p = next()) cout << p;

Файлы и Потоки

  8.3.1 Инициализация Потоков Вывода
  8.3.2 Закрытие Потоков Вывода
  8.3.3 Открытие Файлов
  8.3.4 Копирование Потоков

Потоки обычно связаны с файлами. Библиотека потоков создает стандартный поток ввода cin, стандартный поток вывода cout и стандартный поток ошибок cerr. Программист может открывать другие файлы и создавать для них потоки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: