Чтобы отменить сделанную модификацию потока
Чтобы отменить сделанную модификацию потока cout, необходимо использовать манипулятор noboolalpha:
cout << boolalpha // устанавливает внутреннее состояние cout
<< illustrate
<< noboolalpha // сбрасывает внутреннее состояние cout
Как мы покажем, для многих манипуляторов имеются парные.
По умолчанию значения арифметических типов читаются и записываются в десятичной системе счисления. Программист может изменить ее на восьмеричную или шестнадцатеричную, а затем вернуться к десятичной (это распространяется только на целые типы, но не на типы с плавающей точкой), пользуясь манипуляторами hex, oct и dec:
#include <iostream>
int main()
{
int ival = 16;
double dval = 16.0;
cout << "ival: " << ival
<< " установлен oct: " << oct << ival << "\n";
cout << "dval: " << dval
<< " установлен hex: " << hex << dval << "\n";
cout << "ival: " << ival
<< " установлен dec: " << dec << ival << "\n";
}
Эта программа печатает следующее:
ival: 16 установлен oct: 20
dval: 16 установлен hex: 16
ival: 10 установлен dec: 16
Но, глядя на значение, мы не можем понять, в какой системе счисления оно записано. Например, 20 – это действительно 20 или восьмеричное представление 16? Манипулятор showbase выводит основание системы счисления вместе со значением с помощью следующих соглашений:
0x в начале обозначает шестнадцатеричную систему (если мы хотим, чтобы вместо строчной буквы 'x' печаталась заглавная, то можем применить манипулятор uppercase, а для отмены – манипулятор nouppercase);
0 в начале обозначает восьмеричную систему;
отсутствие того и другого обозначает десятичную систему.
Вот та же программа, но и с использованием showbase:
Содержание Назад Вперед