Параметры форматирования любого потока можно изменить не только посредством прямой установки или очистки флагов форматирования, но и с помощью специальных функций, называемых манипуляторами, которые можно включить в выражение ввода-вывода. Стандартные манипуляторы описаны в следующей таблице.
Манипулятор |
Назначение |
Функция |
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 |
Пропускает ведущие пробельные символы |
Ввод |
Для использования манипуляторов, которые принимают параметры, необходимо включить в свою программу заголовок <iomanip>.
Совет программисту
Одним из самых интересных флагов форматирования, добавленных в новую библиотеку 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 для одного потока не означает, что он установлен и для другого.