Программирование >>  Разработка устойчивых систем 

1 ... 42 43 44 [ 45 ] 46 47 48 ... 196


int ios::width()

Возвращает текущую ширину поля (по умолчанию 0). Используется как при чтении, так и при записи в поток,

int ios::width(int n)

Задает ширину поля, возвращает предыдущее значение,

int ios::fill()

Возвращает текущий заполнитель (по умолчанию - пробел).

int ios::fill(int n)

Задает символ-заполнитель, возвращает предыдущее значение.

int ios::precision()

Возвращает текущую точность вещественных чисел (по умолчанию - 6).

int ios::precision(int n)

Задает точность вещественных чисел, возвращает предыдущее значение (см. ранее описание флагов группы ios::floatfield).

Атрибуты fill и precision вполне понятны, а width стоит пояснить особо. Если значение этого атрибута равно О, то при записи значения в поток генерируется минимальное количество символов, необходимых для представления этого значения. Положительная ширина поля означает, что количество сгенерированных символов будет по крайней мере не меньше width; если оно содержит меньше символов, поле дополняется до необходимой ширины заполнителями fill. Тем не менее, выводимые значения никогда не усекаются, поэтому при попытке вывести 123 с шириной поля 2 все равно будет выведено число 123. Ширина поля определяет минимальное количество символов; задать максимальное количество символов невозможно.

Ширина также отличается от других атрибутов тем, что она обнуляется при каждой операции чтения или записи, на которую она может повлиять. В действительности она является не переменной состояния, а скорее неявным аргументом операторов и . Если вы хотите, чтобы при работе с потоком использовалось постоянное значение ширины, вызывайте width () после каждой операции чтения или записи.

Пример форматирования в потоках вывода

Следующий пример, в котором задействованы все упоминавшиеся функции, поможет вам лучше понять, как они используются на практике:

: С04:Format.срр

Функции форматирования

linclude <fstream>

linclude <iostream>

linclude ../require.h

using namespace std:

Idefine D(A) T A endl: A

int mainO { ofstream T( format.out ): assured): D(int i = 47:)

DCfloat f = 2300114.414159;)



const char* s = Is there any more? :

D(T.setf(ios::unitbuf):)

D(T.setfCiOS::showbase):)

D(T.setfdOS::uppercase ios::showpos);)

D(T i endl:) По умолчанию используется десятичная система (dec) D(T.setf(ios::hex. ios::basefield):) D(T i endl:)

D(T.setf(ios::oct. ios::basefield):) D(T i endl;) D(T.unsetf(ios::showbase):) D(T.setf(ios::dec. ios::basefield):) D(T.setf(ios::left. ios::adjustfield);) D(T.fillCO):)

D(T fill char: T.fillO end!:)

Dd.widthdO):)

T i endl:

D(T.setf(ios::right, ios::adjustfield):)

Dd.widthdO):)

T i end!:

D(T.setf(ios: :intemal. ios: :adjustfield):)

Dd.widthdO):)

T i endl:

D(T i end!:) Без widthdO)

D(T.unsetf(ios::showpos):)

D(T.setf(ios::showpoint):)

D(T prec = T.precisionO end!:)

D(T.setf(ios::scientific. ios::floatfield):)

D(T endl f endl:)

D(T.unsetf(ios::uppercase):)

D(T endl f endl;)

D(T.setf(ios::fixed. ios::floatfield);)

D(T f endl:)

D(T.precision(20):)

D(T prec = T.precisionO end!:)

D(T endl f endl:)

D(T.setf(ios::scientific, ios::floatfield):)

D(T endl f endl:)

D(T.setf(i OS::fi xed, i os::f1oatfi eld):)

D(T f endl:)

Dd.widthdO):) T s endl: D(T.width(40):) T s endl:

D(T.setf(ios::left. ios::adjustfield):) D(T.width(40):) T s endl: } III:-

В данном примере создается трассировочный файл для анализа работы программы. Макрос D(a) средствами препроцессора преобразует а в отображаемую строку, после чего а выполняется как команда. Вся информация передается в трассировочный файл Т. Результат выглядит так:

int i = 47:

float f = 2300114.414159: T.setf(ios::unitbuf);



T.setfdos: :showbase):

Т.setfdOS::uppercase ios::showpos);

T i endl:

T.setf(ios::hex. ios::basefield):

T i endl:

0X2F

T.setf(ios::oct. ios::basefield):

T i endl:

T.unsetf(ios::showbase): T.setf(ios::dec. ios::basefield): T.setf(ios::left. ios::adjustfield): T.fillCO):

T fill char: T.fillO endl:

fill char: 0

T.widthdO):

+470000000

T.setf(ios::right. ios: :adjustfield):

T.widthdO):

0000000+47

T.setf(ios::internal. ios::adjustfield):

T.widthdO):

+000000047

T i endl:

T.unsetf(ios::showpos):

T.setf(i OS::showpoi nt):

T prec = T.precisionO endl:

prec = 6

T.setf(ios::scientific, ios::floatfield); T endl f endl:

2.300114E+06

T.unsetf(ios::uppercase): T endl f endl:

2.300114e+06

T.setf(ios::fixed, ios::floatfield):

T f endl:

2300114.500000

T.precision(20):

T prec = T.precisionO endl: prec = 20

T endl f endl:

2300114.50000000000000000000

T.setf(ios::scientific, ios::floatfield);

T endl f endl:

2.30011450000000000000e+06

T.setf(ios;:fixed. ios::floatfield):

T f endl:

2300114.50000000000000000000

T.widthdO):

Is there any irore?

T.width(40):

OOOOOOOOOOOOOOOOOOOOOOIs there any рюге? T.setf(ios::left. ios::adjustfield):



1 ... 42 43 44 [ 45 ] 46 47 48 ... 196

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