|
Программирование >> Дополнительные возможности наследования
Аисшинг 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.)
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |