Справочник по C/C++
Манипуляторы ввода-вывода

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

Манипулятор    Назначение Функция
boolalpha Устанавливает флаг boolalpha Ввод-вывод
dec Устанавливает флаг dec Ввод-вывод
endl Выводит символ новой строки и сбрасывает поток Вывод
ends Вставляет в поток нулевой символ ('\0') Вывод
flush Сбрасывает поток Вывод
hex Устанавливает флаг hex Ввод-вывод
internal Устанавливает флаг internal Вывод
left Устанавливает флаг lеft Вывод
noboolalpha Сбрасывает флаг boolalpha Ввод-вывод
noshowbase Сбрасывает флаг showbase Вывод
noshowpoint Сбрасывает флаг showpoint Вывод
noshowpos Сбрасывает флаг showpos Вывод
noskipws Сбрасывает флаг skipws Ввод
nounitbuf Сбрасывает флаг unitbuf Вывод
nouppercase Сбрасывает флаг uppercase Вывод
oct Устанавливает флаг oct Ввод-вывод
resetiosflags
(fmtflags f)
Очищает флаги, заданные в переменной f Ввод-вывод
right Устанавливает флаг right Вывод
scientific Устанавливает флаг scientific Вывод
setbase
(int base)
Устанавливает основание системы счисления равной значению base Вывод
setfill
(int ch)
Устанавливает символ-заполнитель равным значению переменной ch Вывод
setiosflags
(fmtflags f)
Устанавливает флаги, заданные в переменной f Ввод-вывод
setprecision
(int p)
Устанавливает количество цифр точности(после десятичной точки) Вывод
setw(int w) Устанавливает ширину поля равной значению переменной w Вывод
showbase Устанавливает флаг showbase Вывод
showpoint Устанавливает флаг showpoint Вывод
showpos Устанавливает флаг showpos Вывод
skipws Устанавливает флаг skipws Ввод
unitbuf Устанавливает флаг unitbuf Вывод
uppercase Устанавливает флаг uppercase Вывод
ws Пропускает ведущие пробельные символы Ввод

Для использования манипуляторов, которые принимают параметры, необходимо включить в свою программу заголовок .


Совет программисту

Одним из самых интересных флагов форматирования, добавленных в новую библиотеку iostream, является флаг boolalpha. Его можно установить либо напрямую, либо путем использования манипуляторов boolalpha() и noboolalpha(). Дело в том, что установка флага boolalpha позволяет вводить и выводить булевы значения с помощью ключевых слов true и false. Обычно нужно было вводить число 1 для значения истины и число 0 для значения лжи. Рассмотрим, например, следующую программу.

// Демонстрация использования флага форматирования boolalpha.
#include 
using namespace std;
int main()
{
	bool b;

	cout << "Перед установкой флага boolalpha: ";
	b = true;
	cout << b << " ";
	b = false;
	cout << b << endl;

	cout << "После установки флага boolalpha: ";
	b = true;
	cout << boolalpha << b << " ";
	b = false;
	cout << b << endl;

	cout << "Введите булево значение:
	cin >> boolalpha >> b;
	cout << "Вы ввели " << b;

	return 0;
}

Вот пример работы этой программы.

Перед установкой флага boolalpha: 1 О
После установки флага boolalpha: true false
Введите булево значение: true
Вы ввели true

Очевидно, что после установки флага boolalpha логические(булевы) значения вводятся и выводятся с помощью слов true и false. Как видно из текста этой программы, флаг boolalpha необходимо установить для потоков cin и cout отдельно, Как и установка всех флагов форматирования, установка флага boolalpha для одного потока не означает, что он установлен и для другого.