- •( Stream – поток, I - input , o – output)
- •Иерархия потоковых классов (одна ветвь)
- •Стандартные потоки ввода – вывода
- •1) Для целых чисел, 2) для вещественных чисел и 3) для строк
- •Компонентные функции класса ios для форматирования
- •Манипуляторы с параметрами ( определены в файле iomanip.H )
- •Ввод-вывод для типов, определенных пользователем
- •Функции чтения
- •Работа с файлами
- •Ввод-вывод нижнего уровня
- •Текстовой и бинарный файлы
- •Открытие и закрытие файлов
- •Чтение и запись данных
- •Int fd ; // дескриптор файла
Компонентные функции класса 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 изменяют состояние потока до следующего явного изменения