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