Программирование >>  Дополнительные возможности наследования 

1 ... 166 167 168 [ 169 ] 170 171 172 ... 265


Аисшинг IB.12. Иасшробка ширины ио я вывоув

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20

Листинг 16.12. Настройка ширины поля вывода flinclude <iostream.h>

int mainO {

cout Start > ;

cout.width(25);

cout 123 < End\ n ;

cout Start > ;

cout.width(25);

cout 123 < Next > ;

cout 456 < End\ n ;

cout Start > ; cout.width(4);

cout 123456 < End\ n ; return 0;

Start > 123< End

Start > 123< Next >456< End

Start >123456< End

Сначала (строки 6-8) число 123 выводится в поле шириной в 25 символов. Ширина поля задается в строке 7. Результат этого форматирования показан в первой строке вывода.

Во второй строке вывода значение 123 распечатывается опять же в поле шириной 25, а затем сразу же выводится значение 456. Как видите, установка ширины поля применяется только первый раз, а для второго выражения с объектом cout уже не действует. Таким образом, установки функции width() применяются только к следующему выражению вывода данных.

В последней строке вывода видно, что установка ширины поля меньшей размера заносимого в него значения игнорируется программой. В этом случае ширина поля устанавливается равной размерам выводимых данных.

Зстановка символов заиоловння

Обычно объект cout заполняет пробелами пустые позиции поля, заданные функцией widthO, как бьшо показано в приведенном выше примере. Однако иногда возникает необходимость заполнить пустые позиции другими символами, например звездочками ( ). Для этого нужно использовать функцию fill(), в параметре которой указать символ заполнения. Использование функции fill() показано в листинге 16.13.



Аисшинг IB.13. Испокьзованне функции f lll()

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17

Листинг 16.13. Функция fillO

ftinclude <iostream.h>

int mainO {

cout Start > ;

cout.width(25):

cout 123 < End\ n ;

cout Start > ; cout.width(25); cout.filK. ); cout 123 < End\ n ; return 0;

, , Start > 123< End

Start >..................123< End

Строки 7-9 переписаны из предыдущего листинга. То же можно сказать и о строках 12-15, однако в строке 14 этого листинга используется функция fill С *) для установки символа звездочки (*) в качестве символа заполнения, что наглядно отражается в выводе профаммы.

Установка флагов

Для отслеживания состояния объектов iostream используются флаги. Установку флагов осуществляют с помощью функции setf(), в качестве параметра которой используется одна из стандартных заранее установленных констант.

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

Например, можно изменить режим отображения чисел и запретить вывод на экран нулевых десятичных значений (чтобы число 20, 00 выглядело как 20). Для этого вызывается функция setf(ios: :showpoint).

Область видимости перечисления констант офаничена классом iostream (ios), поэтому необходимо использовать явное указание имени константы с именем класса ios: :имяфлага, например ios: :showpoint.

Для добавления знака плюс (+) перед положительными значениями устанавливается флаг ios: :showpos. Чтобы изменить выравнивание выводимых данных на экране влево, вправо и по центру поля вывода, используются флаги ios:: left, ios:: right и ios::interval соответственно.

Наконец, установка основания отображаемых числовых значений выполняется с помощью флагов ios::dec (десятичные числа), ios::oct (восьмеричные числа) или ios: :hex (шестнадцатеричные числа). Эти флаги можно использовать в паре с оператором ввода ( ). Пример установки флагов показан в листинге 16.4.



Аистинг 16.14. Установка фдагвв с нвмвщьт setf

4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Листинг 16.14. Использование функции setf ffinclude <iostream.h> (♦include <iomanip.h>

int mainO {

const int number = 185;

cout The number is number endl;

cout << The number is << hex number << endl;

cout.setf(ios;:showbase);

cout The number is hex << number endl;

cout The number is ; cout.width(IO);

cout hex number << endl;

cout << The number is ;

cout.width(IO);

cout.setf(ios::left);

cout hex number endl;

cout The number is ; cout.width(IO); cout.setf(ios; .internal); cout << hex << number << endl;

cout The number is: setw(IO) hex number << endl; return 0;

The number is 185

The number is b9

The number is 0xb9

The number is Oxb9

The number is Oxb9

The number is Ox b9

The number is:Ox b9

В строке 7 целочисленная константа number инициируется значением 185,

которое выводится на экран в строке 8. Это же значение выводится строкой 10, однако, поскольку здесь задействован манипулятор hex, оно отображается в шестнадцатеричном формате как Ь9. (Числу b в шестнадцатеричном коде соответствует 11 в десятичном. Умножение 11 на 16 дает 176. Добавив 9, получаем десятичное значение 185.)



1 ... 166 167 168 [ 169 ] 170 171 172 ... 265

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