Манипуляторы – это особые операции, используемые для изменения формата вывода данных программы. Манипуляторы действуют только на те данные, которые следуют за ними в потоке (<<) . Рассмотрим пример форматированного ввода-вывода:
#include <iostream>
#include <iomanip> // для использования setw
#include <conio>
using namespace std;
//---------------------------------------------------------------------------
int main() {
int pop1 = 8425785, pop2 = 47567; // кол-во населения
cout << setw(8) << "Gorod" << setw(11) << "Naselenie" << endl
<< setw(8) << "Moskva" << setw(11) << pop1 << endl
<< setw(8) << "Kirov" << setw(11) << pop2 << endl;
getch(); return 0; }
В данной программе используется манипулятор setw(n), который печатает число или строку, следующую за ним в потоке, в поле фиксированной длины n. Значение переменной, помещаемой в поле, выравнивается справа.
setw(8)
| setw(11)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Г
| о
| р
| о
| д
|
|
| Н
| а
| с
| е
| л
| е
| н
| и
| е
|
|
| М
| о
| с
| к
| в
| а
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| К
| и
| р
| о
| в
|
|
|
|
|
|
|
|
|
|
|
|
Манипуляторы бывают двух видов: с аргументами и без аргументов. Для работы с ними требуется заголовочный файл <iomanip.h>. Приведём наиболее распространённые манипуляторы.
Таблица "Манипуляторы с аргументами"
Манипулятор
| Аргумент
| Назначение
|
setw()
| ширина поля (int)
| Устанавливает ширину поля для вывода данных
|
setfill()
| символ заполнения (int)
| Устанавливает символ заполнения (по умолчанию, пробел)
|
setprecision()
| точность (int)
| Устанавливает точность, т.е.число выводимых знаков после запятой
|
setiosflags()
| флаги форматирования (long)
| Устанавливает указанные флаги форматирования
|
resetiosflags()
| — « —-
| Сбрасывает указанные флаги форматирования
|
Таблица "Манипуляторы без аргументов"
Манипулятор
| Назначение
|
ws
| Включает пропуск пробелов при вводе
|
dec
| Перевод в десятичную форму
|
oct
| Перевод в восьмеричную форму
|
hex
| Перевод в шестнадцатеричную форму
|
endl
| Вставка разделителя строк, очистка потока и перевод на следующую строку
|
ends
| Вставка символа отсутствия информации для окончания выходной строки
|
…
| …
|
Например, чтобы вывести переменную d в шестнадцатеричной форме, надо указать: cout << hex << d; .