С++ для начинающих




Состояние формата


Каждый объект класса из библиотеки iostream поддерживает состояние формата, которое управляет выполнением операций форматирования, например основание системы счисления для целых значений или точность для значений с плавающей точкой. Для модификации состояния формата объекта в распоряжении программиста имеется предопределенный набор манипуляторов.1 Манипулятор применяется к потоковому объекту так же, как к данным. Однако вместо чтения или записи данных манипулятор модифицирует внутреннее состояние потока. Например, по умолчанию объект типа bool, имеющий значение true (а также литеральная константа true), выводится как целая ‘1’:

#include <iostream.h>

int main()

{

    bool illustrate = true;

    cout << "объект illustrate типа bool установлен в true: "

         << illustrate << '\n';

}

Чтобы поток cout выводил переменную illustrate в виде слова true, мы применяем манипулятор boolalpha:

#include <iostream.h>

int main()

{

    bool illustrate = true;

    cout << "объект illustrate типа bool установлен в true: ";

    // изменяет состояние cout так, что булевские значения

    // печатаются в виде строк true и false

    cout << boolalpha;

    cout << illustrate << '\n';

}

Поскольку манипулятор возвращает потоковый объект, к которому он применялся, то допустимо прицеплять его к выводимым данным и другим манипуляторам. Вот как можно перемежать данные и манипуляторы в нашей программе:

#include <iostream.h>

int main()

{

    bool illustrate = true;

    cout << "объект illustrate типа bool: "

         << illustrate

         << "\nс использованием boolalpha: "

         << boolalpha << illustrate << '\n';

    // ...

}

Вывод данных и манипуляторов вперемежку может сбить пользователя с толку. Применение манипулятора изменяет не только представление следующего за ним объекта, но и внутреннее состояние потока. В нашем примере все значения типа bool в оставшейся части программы также будут выводиться в виде строк.




Содержание  Назад  Вперед