Манипуляторы потоков являются по существу функциями, которые можно вызывать непосредственно в цепочке операций извлечения или передачи в поток. Различают простые и параметризованные манипуляторы. У простых манипуляторов аргументы отсутствуют. Параметризованные манипуляторы имеют аргумент.
Ниже приводится сводка имеющихся манипуляторов, как простых, так и параметризованных. Они Перечислены в алфавитном порядке.
Таблица 9.2. Простые и параметризованные манипуляторы
Манипулятор |
Описание |
dec |
Задает десятичную базу преобразования. |
end1 |
Передает в поток символ новой строки и сбрасывает поток. |
ends |
Передает в поток символ завершающего строку нуля. |
flush |
Сбрасывает выходной поток. |
hex |
Задает шестнадцатеричную базу преобразования. |
lock(ios Sir) |
Блокирует дескриптор файла потока ir. |
oct |
Задает восьмеричную базу преобразования. |
resetiosflags(int f) |
Сбрасывает флаги, биты которых установлены в f. |
setbase(int b) |
Устанавливает базу преобразования (0, 8, 10 или 16). |
setiosflags(int f) |
Устанавливает флаги, биты которых установлены в f. |
setfill(int c) |
Задает символ заполнения (аналогичен функции fiilO). |
setprecision(long p) |
Задает точность (аналогичен функции precision ()). |
setw(iong w) |
Задает ширину поля (аналогичен функции width ()). |
lunlock(ios &ir) |
Разблокирует дескриптор файла для потока ir. |
ws |
Исключает начальные пробельные символы. |
Вот пример использования некоторых манипуляторов (мы создали один свой собственный):
Листинг 9.2. Форматирование с помощью манипуляторов
/////////////////////////////////////////////////
// Manip.cpp: Демонстрация некоторых манипуляторов.
//
#include <iomanip.h>
#pragma hdrstop
#include <condefs.h>
//////////////////////////////////////////////////
// Манипулятор, определенный пользователем - звонок.
//
ostream shell(ostream &os)
{
return os<< '\a';
#pragma argsused
int main(int argc, char* argv[])
{
cout “ bell; // Тестирование манипулятора bell.