Программирование >>  Программирование на языке c++ 

1 ... 104 105 106 [ 107 ] 108 109 110 ... 159


showpos, выводит + для положительных чисел scientific, выводит числа в формате с

плавающей запятой fixed, выводит числа в формате с

фиксированной запятой

unitbuf, сброс после каждой операции вывода

stdio }; сброс после каждого символа

Заметим, что в конкретно!! системе программирования элементам перечисления могут ставиться в соответствие разные целые значения, поэтому следует обращаться к этим элементам только по их именам (что и сделано ниже). Независимо от системы программирования каждому признаку соответствует определенны!! бит. Если этот бит установлен, то считается, что признак тоже установлен, а если сброшен, - то и признак сброшен. Поскольку каждый признак идентифицируется соответствующим ему битом в некотором целом значении, то можно использовать операцию побитовое ИЛИ ( ), чтобы записать в одно целое значение сразу несколько признаков:

const long my set = ios::left ios::hex ios::showpos;

теперь можно установить сразу три признака (left, hex и showpos), вызвав функцию flags:

cout.flags(my set);

Эта функция возвращает значения ранее установленных (старых) признаков. В результате новые признаки можно добавить (к старым признакам) следующим образом:

cout.flags(cout.flags{) ios::showbase);

Функция setf имеет один или два аргумента, первый из которых задает устанавливаемый признак, а второй (если он есть) является псевдоаргументом, указывающим, какой тип операции необходимо выполнить, например:

cout.setf(ios::hex,ios::basefield); здесь basefield -

псевдоаргумент cout.setf(ios::showbase); вывод системы счисления

в виде Ох cout 20 40;



Теперь числа 20 и 40 будут выведены в шестнадцатеричной системе счисления:

0x14 0x28

Аналогичные действия можно производить для выравнивания поля, в котором выводятся различные значения. Рассмотрим пример:

cout.width{7);

cout [ -123 ]\n ; cout.width(7);

cout.setf(ios::internal,ios::adjustfield); adjustfield -

псевдоаргумент

cout [ -123 ]\n ; cout.width{7);

cout.setf(ios::left,ios::adjustfie!d); adjustfield -

псевдоаргумент

cout [ -123 ]\n ; Теперь результат будет представлен в таком виде: [ -123] [- 123] [-123 ]

Второй аргумент функции setf может принимать следующие значения:

static const long adjustfield; left или right или internal static const long basefield; dec или oct или hex static const long floatfield; scientific или fixed

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

Многие операции с изменением признаков являются утомительными и в большинстве случаев неэффективными. В § 8.6 описывается иной способ форматирования, который использует специальные операторы, называемые манипуляторами. Эти операторы можно записывать между операторами



И . В результате соответствующие выражения будут короче и нагляднее.

8.6. Манипуляторы

Описания для стандартных манипуляторов включены в файл iomanip.h (который надо включить в программу директивой #include <iomanip.h> при использовании этих манипуляторов). Однако программист может определить и новые манипуляторы без изменения стандартных определений.

Различают простые манипуляторы и манипуляторы, требующие аргументов. Простыми манипуляторыми являются:

oct - число в восьмеричном формате;

dec - число в десятичном формате;

hex - число в щестнадцатеричном формате;

endl - значение \п и очистка буфера (только для вывода);

ends - значение \0 и очистка буфера (только для вывода);

flush - очистка буфера (только для вывода);

WS - удаление промежутков между символами (пробелы, табуляция и т. п.). Используется только при вводе.

Манипуляторами с аргументами являются:

setbase(int base) - преобразует систему счисления к основанию base (8, 10 или 16);

setfill(int character) - устанавливает символ-заполнитель (character);

setprecision(mt pr) - устанавливает точность (рг) вывода вещественных чисел;

setw(int w) - устанавливает ширину поля (w);

resetiosflags(long n) - сбрасывает биты признаков, определяемые значением п;

setiosflags(long п) - устанавливает биты признаков, определяемые значением п.

Манипуляторы setfill, setprecision и setw используются только при выводе данных.



1 ... 104 105 106 [ 107 ] 108 109 110 ... 159

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