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



Состояние формата - часть 2


Чтобы отменить сделанную модификацию потока 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:




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