Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП Ответы все.docx
Скачиваний:
23
Добавлен:
01.03.2016
Размер:
71.65 Кб
Скачать

40.Организация ввода-вывода для пользовательских классов.

Для ввода и вывода в потоках используются перегруженные для всех стандартных

типов операцрш чтения и извлечения « и » . При этом выбор конкретной

операции определяется типом фактических параметров. Для того чтобы вводить

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

эти операции. Это бинарные операцирг, левым операндом которых является

объект-поток, а правым — объект, который требуется извлечь или поместить в

этот поток.

class MyClass{

1 nt X:

float у;

friend ostream& operator « (ostream& out. MyClass& C){

return out « "x = " « C.x « " у = " « C.y:

}

friend istream& operator » (istream& in. MyClass& C){

cout « "Введите x: ":in » C.x;

cout « "Введите у: ":in » C.y;

return in;

}

41. Использование файлов и буферов в памяти для ввода-вывода.

Обмен с потоком для увеличения скорости передачи данных производится, как правило, из специальной области оперативной памяти – буфера. Фактическая передача данных выполняется при выводе после заполнения буфера, а при вводе – если буфер исчерпан. По направлению обмена потоки можно разделить на входные (данные вводятся в память), выходные (данные выводятся из памяти) и двунаправленные (допускающие как извлечение, так и включение).

42. Средства форматного вывода, манипуляторы.

Возможность управлять вводом-выводом в С++, обеспечивают форматирующие функции-члены, флаги и манипуляторы. Флаги, функции и манипуляторы выполняют одну и туже задачу — задают определённый формат ввода/вывода информации в потоках. Ввод/вывод на экран/с экрана в С++ осуществляется с помощью операторов cin и cout соответственно, а значит манипуляторы форматирования используются совместно с данными операторами ввода/вывода. Различие между функциями флагами и манипуляторами форматирования состоит в способе их применения. Теперь рассмотрим способы применения объектов форматирования.

//Основные форматирующие функции-члены:

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

// где symbol - символ заполнитель, символ передаётся в одинарных кавычках

cout.width(/*width_field*/); // задает ширину поля

// где width_field - количество позиций(одна позиция вмещает один символ)

cout.precision(/*number*/); // задает количество знаков после десятичной точки

// где number - количество знаков после десятичной точки

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

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

на простые, не требующие указания аргументов, и параметризованные.

Пользоваться манипуляторами более удобно, чем методами установки флагов

форматирования.

Простые манипуляторы

Ниже перечислены манипуляторы, не требующие указания аргументов.

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

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

hex — устанавливает при вводе и выводе флаг шестнадцатеричной системы

счисления;

WS — устанавливает при вводе извлечение пробельных символов;

endl — при выводе включает в поток символ новой строки и выгружает буфер;

ends — при выводе включает в поток нулевой символ;

flush — при выводе выгружает буфер.