|
Программирование >> Программирование на языке c++
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 используются только при выводе данных.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |