На этом шаге мы рассмотрим задание формата при работе с логическими данными.
Флаг boolalpha определяет формат ввода и вывода логических значений - числовой или текстовый (таблица 1).
Флаг | Описание |
---|---|
boolalpha | При установленном флаге используется текстовое представление. При сброшенном флаге используется числовое представление |
Если флаг не установлен (значение по умолчанию), логические данные представляются в числовом виде. В этом случае false всегда представляется значением 0, a true - значением 1. При чтении логических данных в числовом представлении наличие символов, отличных от 0 и 1, считается ошибкой (для потока данных устанавливается бит failbit).
При установке флага логические данные читаются и записываются в текстовом представлении. При чтении логического значения строка должна соответствовать текстовому представлению true или false. Строки, представляющие эти значения, определяются состоянием объекта локального контекста. Стандартный объект локального контекста "С" использует для представления логических значений строки "true" и "false".
Для удобства работы с этим флагом определены специальные манипуляторы (таблица 2).
Манипулятор | Описание |
---|---|
boolalpha | Включает текстовое представление (установка флага ios::boolalpha) |
noboolalpha | Включает числовое представление (сброс флага ios::boolalpha) |
Например, следующий фрагмент выводит переменную b сначала в числовом, а затем в текстовом представлении:
bool b; . . . . . cout << noboolalpha << b << " == " << boolalpha << b << endl;
На следующем шаге мы рассмотрим способы задания ширины поля, заполнителя, выравнивания.