Организация потокового ввода вывода. Процедурно-ориентированные средства работы с потоками, страница 5

3) при вводе/ выводе значений элементов массива необходимо явно обращаться к ним по индексу

double e[5];

for (int i = 0; i<5, i++) cin >> e[i];

При вводе/выводе автоматически происходит преобразование в соответствии с типом объекта, являющегося правым операндом.

4) при вводе вещественных чисел допустимы все формы записи

5) извлечение данных из потока происходит только после нажатия <ENTER>. Вся введенная строка переносится в буфер ввода. При вводе числовой операции игнорируются начальные пробелы. Чтение происходит с первого непробельного символа, до первого нечислового символа. При вводе строки извлечение информации происходит до ближайшего пробела, на место которого автоматически заносится символ ‘\0’, обозначающий конец строки.

6) значения указателей, то есть адреса выводятся в стандартный поток в 16-ричном виде:

7) операция вывода, которая работает с символьной строкой, всегда вызывает строку, а не значение указателя, связанного с этой строкой.

Чтобы вывести значение указателя, надо выполнить приведение типа указателя

сhar H[]=”…”; char* ph=H;

cout << (void *) pH;

Форматированный ввод вывод

            Форматы представления выводимой информации и правила воспроизведения информации, извлекаемой из потока, задаются с помощью флагов форматирования. Эти флаги унаследованы из ios . Флаги реализуются в виде отдельных битов числа типа long, поэтому несколько флагов можно объединять с помощью логических битовых выражений.

Флаги форматирования:

skipws = 0x001

Пропустить начальные невидимые символы при извлечении из потока

left = 0x002

right = 0x0001

вывод значения с левым выравниванием

вывод значения с правым выравниванием

internal = 0x0008

Принятый в качестве заполнителя символ (по умолчанию помещается между числовым значением и знаком, либо признаком {счисления

dec = 0x0010

oct = 0x0020

hex = 0x0040

Задают систему числения    - 10

                                                - 8

                                                - 16

showbase = 0ч0080

печать при выводе признак системы счисления 0 - 8-ричной; 0x – 16 ричной

uppercase = 0x0200

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

showpos = 0x0400

печать + при выводе "+" чисел

scientific = 0x0800

fixed =0x1000

формат с плав. точкой

формат с фиксированной точкой

unitbuf = 0x2000

очищать все потоки после каждого вывода

showpoint = 0x0100

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

Так как флаги являются объектом класса ios, доступ к ним осуществляется с помощью операции расширения области видимости ios::

Кроме флагов, для управления форматом используются следующие переменные, определенные в классе ios:

long x_flags;        // представление флагов форматирования

int x_width;         // задает минимальную ширину поля вывода

int x_precision;     // задает точность представления вещественных чисел

int x_file;          // задает символ заполнения

Для изменения значений этих переменных используются специальные функции класса ios:

char fill ( );                 // возвращает текущий символ заполнения

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

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

long flags (long);        // устанавливает биты флагов форматирования

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

int precision (int);       // устанавливает текущее значение точности

long setf (long);          // устанавливает флаги форматирования