|
Программирование >> Структурное программирование
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;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |