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

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


11.7.4. Заполнение (fill, setfill)

Функция-элемент fill задает заполняющий символ, который используется при выравнивании в полях; если никакое значение заполняющего символа не задано, то для заполнения используются пробелы. Функция fill возвращает предыдущий заполняющий символ. Манипулятор setfill также устанавливает значение заполняющего символа. На рис. 11.24 показано использование функции-элемента fill и манипулятора setfill для управления установкой и восстановлением заполняющего символа.

figll 24.cpp

Использование функции-элемента fill и

манипулятора setfill для изменения заполняющего символа полей,

ширина которых превышает ширину, необходимую для печати

iinclude <iostream.h> iinclude <iomanip.h>

mam ( {

int X = 10000;

cout << X

<< напечатанное как целое с выравниванием right и left endl

и как шестнадцатеричное с выравниванием internal endl

Использование заполняющего символа по умолчанию (пробела)

endl; cout.setf(ios::showbase) ; cout setw (10) X endl; cout.setf(ios::left, ios::adjustfield); cout << setw(10) X endl; cout.setf(ios::internal, ios::adjustfield); cout setw (10) hex x endl endl;

cout << Использование различных заполняющих символов: endl;

cout.setf(ios::right, ios::adjustfield); cout.fill(*);

cout setw(10) dec x endl; cout.setf(ios::left, ios::adjustfield); cout setw(10) setfill(%) x endl; cout.setf(ios::internal, ios::adjustfield); cout setw(lO) setfill(*) hex x endl;

return 0;

10000 напечатанное как целое с выравнивгшием right и left и как шестнадцатеричное с выравниванием internal Использование заполняющего символа по умолчанию (пробела)

10000 10000



11.7.5. Основание системы счисления (ios::dec, ios::oct, ios::hex,

ios::showbase)

Статический элемент ios::basefield (используемый аналогично тому, как с помощью setf используется ios::adjustfield) включает биты флагов ios::oct, ios::hex и ios::dec, которые трактуют целые числа соответственно как восьмеричные, шестнадцатеричные или десятичные значения. Если ни один из этих битов не установлен, то по умолчанию целые числа при операции поместить в поток трактуются как десятичные. При операции взять из потока данные по умолчанию обрабатываются в той форме, в которой они поступают: целые, начинающиеся с О, обрабатываются как восьмеричные значения, целые, начинающиеся с Ох или ОХ, обрабатываются как шестнадцатеричные значения, а все другие целые числа обрабатываются как десятичные значения. Если же для потока указывается определенное основание, то все целые значения данных в этом потоке обрабатываются с помощью этого основания до тех пор, пока не задано новое основание или пока не завершится программа.

figll 25.cpp

Использование флага ios::showbase #include <iostream.h> #include <iomanip.h>

main () {

int X = 100;

cout << setiosflags(ios::showbase)

<< Печать целых чисел с разными основаниями: << endl

X endl

oct X endl

hex X endl; return 0;

Печать целых чисел с разными основаниями:

0144

0x64

Рис. 11.25. Использование флага ios::siiowbase

Ox 2710

Использование различных заполняхяцих символов: *****10000 10000%%%%% 0х****2710

Рис. 11.24. Использование функции-элемента fill и манипулятора setfill для изменения заполняющего символа полей, ширина которых превышает ширину, необходимую для печати



Устанавливайте флаг showbase, чтобы задавать основание целочисленных значений для вывода. Десятичные числа выводятся обычным способом, восьмеричные числа выводятся с нулем в старшем разряде (ведущим нулем), шестнадцатеричные числа выводятся с индикатором Ох или ОХ в старших разрядах (флаг uppercase определяет, какой из этих двух вариантов будет выбран, см. раздел 11.7.7). На рис. 11.25 показано использование флага showbase для печати целых чисел в десятичном, восьмеричном и шестнадцатеричном форматах.

11.7.6. Числа с плавающей запятой; экспоненциальный формат (ios::scient1fic, ios::fixed)

Флаги ios:.scientific и ios::fixed содержатся в статическом элементе данных ios::floatfield, используемом аналогично тому, как с помощью setf используется ios: :adjustfield. Эти флаги управляют форматом вывода для чисел с плавающей запятой. Флаг scientific устанавливается для вывода чисел с плавающей запятой в экспоненциальном формате (в C-b-f он назван научным, но это не тот формат, который называется научным в других языках). Флаг fixed устанавливается для вывода чисел с плавающей запятой в формате с фиксированной точкой с заданным количеством разрядов (указанным с помощью функции-элемента precision) справа от десятичной точки. Без установки этих флагов значения чисел с десятичной запятой сами определяют форматы выводимых данных.

Вызов cout.setf (О, ios::floatfield) восстанавливает в системе формат вывода чисел с плавающей запятой по умолчанию. Программа на рис. 11.26 показывает вывод на экран чисел с плавающей запятой в фиксированном и экспоненциальном форматах с помощью двух аргументов функции setf и флага ios::floatfield.

figll 26.Gpp

Отображение на экране значений с плавающей запятой

в форматах по умолчанию, экспоненциальном

и с фиксированной точкой

tinclude <iostream.h>

main() {

double X = .001234567, у = 1.946e9;

cout << Отображение в формате по умолчанию: << endl

X \t у endl; cout.setf(ios::scientific, ios::floatfield); cout << Отображение в экспоненциальном формате: << end!

X \t у endl; cout.unsetf(ios::scientific);

cout << Отображение в формате по умолчанию после unsetf: endl

X \t у endl; cout.setf(ios::fixed, ios::floatfield);

cout << Отображение в формате с фиксированной точкой: <<endi X \t у endl;



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

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