Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ввод-вывод.doc
Скачиваний:
8
Добавлен:
18.04.2015
Размер:
273.92 Кб
Скачать

Компонентные функции класса ios для форматирования

char fill ( ) ; – возвращает символ заполнения пустых позиций вывода

char fill (char) ;– замещает символ заполнения пустых позиций вывода,

возвращает предыдущий символ заполнения

Значение символа (кода символа) заполнения хранится в

компонентной переменной класса int x_fill

long flags ( ) ; – возвращает текущий набор битов флагов форматирования

long flags ( long) ;– устанавливает флаги в соответствии со значением

параметра, возвращает предыдущее значение флагов

int precision ( ) ; -возвращает текущее значение точности вывода

вещественных чисел

int precision ( int n) ; - устанавливает по значению параметра

точность представления вещественных чисел, т.е.

количество цифр дробной части при выводе,

передает значение в переменную int x_precision,

возвращает предыдущее значение точности

long setf ( long ) ; - устанавливает набор флагов в соответствии с параметром,

возвращает значение старого набора;

long setf ( long setbits , long field ) ; - устанавливает флаги в соответствии со

значением параметра setbits ; биты, которые дает параметр

field ,сбрасываются и устанавливаются новые биты.

int width (); - возвращает текущее значение ширины поля вывода

int width (int ); - устанавливает значение ширины поля вывода, в

соответствие со значением параметра, значение

сохраняется в переменной int x_width , функция

возвращает старое значение

и т. д.

В классе ios имеются три компонента – статические константы ( общие для всех объектов класса ( обращение : ios:: имя) , объединяющие несколько флагов

static const long adjustfield ; // left |right | internal

static const long basefield ; // dec | oct | hex

static const long floatfield; // scientific | fixed

Используются в качестве второго параметра в функции setf ( ) для сбрасывания флагов.

Обращения к функциям

void main()

{clrscr();

cout.width(15); // ширины вывода

cout.fill('*'); // установка символа заполнителя

cout.setf(ios::internal); // заполнить между знаком и значением

cout<<-5.35<<endl; // -**********5.35

cout.setf(ios::left,ios::adjustfield); //сбросили правое выравнивание,

//установили левое

cout.width(15);

cout<<-32767<<endl; //-32767*********

cout.setf(ios::hex,ios::basefield); //сбросили старую систему, установили

// новую систему счисления

cout.width(15);

cout<<32767<<endl; // 7fff***********

cout.setf(0x0200|0x0080); //показать признаки системы и верхн. рег.

cout.width(15);

cout<<32767<<endl; // 0X7FFF*********

cout.setf(ios::right,ios::adjustfield); // правое выравнивание

cout.width(15);

cout<<32767<<endl; // *********0X7FFF

cout.fill('.');

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

cout.width(15);

cout<<32767<<endl; // 0X………7FFF

cout.fill('+');

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

cout.width(15);

cout<<32767<<endl; // +++++++++0X7FFF

}

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

Более простой способ форматирования – это использования манипуляторов.

Манипуляторы – это специальные функции позволяющие изменять флаги потока.

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

Манипуляторы можно включать в цепочки включений в поток и извлечений из потока.

Манипуляторы изменяют состояние потока.

Манипуляторы без параметров

dec - действует при вводе и выводе, устанавливает флаг десятичной

системы

hex - действует при вводе и выводе , устанавливает флаг

шестнадцатеричной системы

oct - действует при вводе и выводе, устанавливает флаг восьмеричной

системы

endl - действует только при выводе, обеспечивает включение в поток

символа новой строки и сбрасывает буфер

ends - действует только при выводе, обеспечивает включение в поток

нулевого признака конца строки

flush - действует только при выводе, обеспечивает сбрасывание буфера

ws - действует только при вводе, обеспечивает извлечение из входного

потока пробельных символов ( пробел, ' \t’, ‘\v’ , ‘\n’, ‘\r’, ‘\f’)

hex, oct, dec изменяют состояние потока до следующего явного изменения