Программирование >>  Структурное программирование 

1 ... 216 217 218 [ 219 ] 220 221 222 ... 342


ios::skipws ios::left ios::right ios::internal

ios:: dec ios::oct ios::hex

ios::showbase ios::showpoint ios::uppercase ios::showpos

ios::scientific ios::fived

Рис. 11.20. Флаги состояния формата

11.7.2. Нулевые младшие разряды и десятичные точки

(ios::showpoint)

Флаг showpoint устанавливается для вывода числа с обязательной печатью десятичной точки и нулевых младших разрядов (нулей в конце числа). Значение с плавающей точкой 79.0 без установки showpoint будет напечатано как 79, а с установкой showpoint - как 79.000000 (количество нулей определяется заданной точностью). Программа, приведенная на рис. 11.21, демонстрирует использование функции-элемента setf для установки флага show-point, управляющего печатью нулевых младших разрядов и десятичной точки для значений с плавающей запятой.

figll 21.cpp

Управление процессом печати нулевых младших разрядов и десятичной точки для значений с плавающей запятой

ttinclude <iostream.h> tinclude <iomanip.h> tinclude <math.h>

cout cout печатает 9.9900 как: 9.9900 endl cout печатает 9.9000 как: 9.9000 endl cout печатает 9.0000 как: 9.0000 endl endl << После установки флага ios::showpoint << endl;

cout.setf(ios::showpoint);

cout cout печатает 9.9900 как: 9.9900 endl

cout печатает 9.9000 как: 9.9000 endl

cout печатает 9.0000 как: 9.0000 endl;

return 0;



11.7.3. Выравнивание (ios::left, ios::right, ios::internal)

Флаги left и right позволяют выравнивать печать соответственно по левой или правой границам поля с помощью заполняющих символов, печатаемых соответственно в правых или левых пустых позициях. Используемый для заполнения символ задается с помощью функции-элемента fill или параметризованного манипулятора потока setfill (см. раздел 11.7.4). Рис. 11.22 показывает использование манипуляторов setw, setiosflags и resetiosflags и фзшкций-элементов setf и unsetf для управления выравниванием по левой и правой границам полей при печати целых чисел.

figll 22.cpp

Выравнивание по левой и правой границам поля

iinclude <iostream.h> #include <iomanip.h>

main()

int X = 12345;

cout По умолчанию проводится выравнивание << по правой границе поля: endl setw(10) х endl endl ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ-ЭЛЕМЕНТОВ endl Использование setf для установки ios::left: endl setw(10);

cout.setf(ios::left, ios::adjustfield); cout << X << endl

Использование функции unsetf для восстановления умолчания:

endl; cout.unsetf(ios::left); cout setw(10) X endl endl

ИСПОЛЬЗОВАНИЕ ПАРАМЕТВИЗИРОВАННЫХ

МАНИПУЛЯТОРОВ ПОТОКА endl

Использование setiosflags для установки ios::left: endl

setw(lO) setiosflags(ios::left) x endl

cout печатает 9.9900 как: 9.99 cout печатает 9.9000 как: 9.9 cout печатает 9.0000 как: 9

После усташовки флага ios::showpoint cout печатает 9.9900 как: 9.990000 cout печатает 9.9000 как: 9.900000 cout печатает 9.0000 как: 9.000000

Рис. 11.21. Управление печатью нулевых младших разрядов и десятичных точек для значений

с плавающей запятой



По умоячаюоо проводится выравнивание по правой границе поля: 12345

ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ-ЭЛЕМЕНТОВ Использование setf для установки ios::left: 12345

Использование функции unsetf для восстановления умолчания: 12345

ИСПОЛЬЗОВАНИЕ ПАРАМЕТРИЗИРОВАННЫХ МАНИПУЛЯТОРОВ ПОТОКА Использование setiosflags для установки ios::left: 12345

Использование resetiosflags для восстановления умолчания: 12345

Рис. 11.22. Выравнивание по левой и правой границам поля

Флаг internal показывает, что знак числа (или основание, если установлен флаг ios::showbase - см. раздел 11.7.5) следует выравнивать по левой границе поля, значение числа следует выравнивать по правой границе, а в промежуточных пустых позициях следует разместить заполняющие символы. Флаги left, right и internal содержатся в статическом элементе данных ios::adjust-field. Аргумент ios::adjustfield необходимо задавать в качестве второго параметра функции-элемента setf, если устанавливаются флаги выравнивания left, right или internal. Это гарантирует, что функция setf установит только один из трех флагов (они взаимно исключают друг друга). На рис. 11.23 показан пример использования манипуляторов потока setiosflags и setw для задания внутренних пробелов. Обратите внимание, что использование флага ios::showpos приводит к обязательной печати знака плюс.

figll 23.cpp

Печать целого числа с внутренними пробелами и принудительной печатью знака плюс.

tinclude <iostream.h> tinclude <iomanip.h>

main () {

cout << setiosflags (ios::internal ios::showpos)

setw(lO) 123 endl; return 0;

+ 123

Использование resetiosflags для восстановления умолчания: endl setw(lO) resetiosflags(ios::left) x << endl; return 0;



1 ... 216 217 218 [ 219 ] 220 221 222 ... 342

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