Программирование >>  Операторы преобразования типа 

1 ... 190 191 192 [ 193 ] 194 195 196 ... 239


выводятся без знака, а символы выводятся в нижнем регистре. Например, рассмотрим такой фрагмент:

5td::cout 12345678.9 std::endl:

std::cout.setf (std::1os::showpos std::ios::uppercase):

std:;COUt 12345678.9 Std:;endl;

Этот фрагмент выводит следующий результат:

1.234576+07 +1.23457Е+07

Оба флага также можно устанавливать и сбрасывать при помощи манипуляторов, представленных в табл. 13.18.

Таблица 13.18. Манипуляторы для управления знаком и регистром символов в числах Манипулятор Описание

showpos Вывод знака для положительных чисел (установка флага iosiishowpos)

noshowpos Вывод положительных чисел без знака (сброс флвг ios::showpos) uppercase Вывод символов в числах в верхнем регистре (установка флага ios::uppercase)

nouppercase Вывод символов в числах в нижнем регистре (установка флага ios::uppercase)

Система счисления

Следующая группа из трех флагов управляет основанием системы счисления, используемой при вводе-выводе целых чисел (табл. 13.19). Флаги определяются в классе ios base вместе с соответствующей маской.

Таблица 13.19. Флаги системы счисления Маска Флаг Описание

basefield

Чтение/запись в восьмеричной системе

Чтение/запись в десятичной системе (используется по умолчанию)

Чтение/запись в шестнадцатеричной системе

Запись в шестнвдцатеричной системе, чтение в зависимости от начальных символов целого числа

Смена основания системы счисления отражается на дальнейшем вводе-выводе всех целых чисел до следующего изменения флагов. По умолчанию используется десятичный формат. Поддержка двоичной записи не предусмотрена, однако чтение и запись целых чисел в двоичном виде может осуществляться при помощи класса bitset. За дополнительной информацией обращайтесь к с. 445.

Флаги системы счисления также распространяются на ввод. Данные читаются в системе, определяемой установкой одного из флагов. Если флаги не установлены, то при чтении основание системы счисления определяется но префиксу:



Формати ро ван и е 597

число, начинающееся с префикса Ох или ОХ, интерпретируется как шестнадцате-ричное. Префикс О является признаком восьмеричной записи. Во всех остальных случаях число считается десятичным.

Существуют два основных способа переключения флагов системы счисления.

О Сброс одного флага и установка другого:

std::cout.unsetf (std::1os:;dec): std::cout.setf (std::1os::hex):

О Установка одного флага с автоматическим сбросом остальных флагов группы: std::cout.setf (std:;ios::hex. std::los::basef1eld);

В табл. 13.20 перечислены манипуляторы, упрощающие работу с флагами этой группы.

Таблица 13.20. Манипуляторы, определяющие основание системы счисления Манипулятор Описание

oct Запись и чтение в восьмеричной системе

dec Запись И чтение в десятичной системе

hex Запись и чтение в шестнаДцатеричной системе

Например, следующий фрагмент выводит х и у в щестнадцатеричной системе, а Z - в десятичной системе:

int X. у. z:

std::cout Std::1 OS::hex x std::endl:

std::cout у std::ios dec z std::endl;

Дополнительный флаг showbase выводит числа по стандартным правилам обозначения системы счисления числовых литералов в C/C++ (табл. 13.21).

Таблица 13.21. Флаг, обозначающий основание системы счисления Флаг Описание

showbase Если флаг установлен, при выводе указывается система счисления

числовых литералов

При установке флага ios::showbase восьмеричные числа выводятся с префиксом О, а шестнадцатеричные числа - с префиксом Ох (или при установленном флаге ios::uppercase - ОХ). Например, рассмотрим такой фрагмент:

std::cout 127 255 std::endl;

std::cout std::hex 127 255 std::endl:

std::cout.setf(std::ios::showbase):



std::cout 127 255 std::endl;

std: :(j:out.setf(std: :1os: :uppercase):

std::cout 127 255 std::endl;

Этот фрагмент выводит следующий результат:

127 255 7f ff 0x7f Oxff 0X7F OXFF

Для управления флагом ios::5howbase также можно использовать манипуляторы, представленные в табл. 13.22.

Таблица 13.22. Манипуляторы для идентификации системы счисления Манипулятор Описание

showbase Вывод идентификатора системы счисления (установка флага i05::showba5e)

noshowbase Запрет на вывод идентификатора системы счисления (сброс флага ios:;showbase)

Формат вещественных чисел

Некоторые флаги и переменные управляют выводом вещественных чисел. Флаги, перечисленные в табл. 13.23, определяют тип записи (десятичная или научная). Эти флаги определяются в классе ios base вместе с соответствующей маской. Если флаг ios::fixed установлен, вещественные числа выводятся в десятичной записи. При установке флага ios::scientiflc используется научная (экспоненциальная) запись.

Таблица 13.23. Флаги вывода вещественных чисел Маска Флаг Описание

floatfield fixed Использование десятичной записи

scientific Использование научной записи нет Использование лучшей из этих двух записей

Точность вывода определяется функцией precision() (табл. 13.24).

Таблица 13.24. Функции управления точностью вывода вещественных чисел Функция Описание

precision() Возвращает текущую точность вывода вещественных чисел

precision (val) Определяет новую точность вывода вещественных чисел val и возвращает прежнюю точность

При использовании научной записи функция precisionO определяет количество десятичных разрядов в дробной части. Остаток всегда округляется.



1 ... 190 191 192 [ 193 ] 194 195 196 ... 239

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика