Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры(ооп) кроме 45,46,52.docx
Скачиваний:
2
Добавлен:
24.09.2019
Размер:
117.21 Кб
Скачать

23.Организация файла произвольного доступа

Организация хранения информации в файле прямого доступа предполагает доступ к ней не последовательно от начала файла по некоторому ключу, а непосредственно, например по их порядковому номеру. Для этого требуется, чтобы все записи в файле были одинаковой длины.

Наиболее удобными для организации произвольного доступа при вводе−выводе информации являются компоненты-функции istream::read и ostream::write. При этом, так как функция write (read) ожидает первый аргумент типа const сhar* (char* ), то для требуемого приведения типов используется оператор явного преобразования типов:

istream& istream::read(reinterpret_cast<char *>(&s), streamsize n);

ostream& ostream::write(reinterpret_cast<const char *>(&s), streamsize n);

25. Спецификации исключительных ситуаций

Иногда возникает необходимость заранее указать, какие исключения мо-

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

объявление функции throw(тип1, тип2,…){тело функции}

где тип1, тип2,… − список типов, которые может иметь выражение throw внутри функции. Если список типов пуст, то компилятор полагает, что функцией не будет выполняться никакой throw.

void fun(char c) throw();

Использование спецификации исключительных ситуаций не означает, что

в функции не может быть сгенерирована исключительная ситуация некоторого не указанного в спецификации типа. Просто в этом случае программа по умолчанию завершится, так как подобные действия приведут к вызову неожиданного обработчика. Таким образом, когда функция генерирует исключительную ситуацию, не описанную в спецификации, выполняется неожиданный обработчик

unexpected().

26.Организация ввода\вывода.Манипуляторы << и >>

В С++ используется достаточно гибкий способ выполнения операций

ввода−вывода классов с помощью перегрузки операторов << (вывода) и >> (ввода). Операторы, перегружающие эти операции, обычно называют инсертером и экстрактором. Для обеспечения работы с потоками ввода−вывода необходимо включить файл iostream, содержащий класс iostream. Этот класс является производным от ряда классов, таких как ostream, обеспечивающий вывод данных в поток, и istream − соответственно чтения из потока.

Для перевода курсора на новую строку надо вставлять манипулятор endl.

Манипуляторы hex и oct используются для вывода числовой информации в шестнадцатеричном или восьмеричном представлении.

cout <<hex << j <<' ' << j <<' '<<dec << j <<' ' << oct << j <<endl;

Манипуляторы изменяют значение некоторых переменных в объекте cout.

Есть манипуляторы, позволяющие выполнять форматирование

выводимой на экран информации setw(), setfill(' '). Синтаксис их показывает, что это функции. На самом деле это компоненты-функции

#include "iomanip.h"

void main(){ int a=0x11; double d=12.362;

cout << setw(4) << a << endl;

cout << setw(10) << setfill('*') << a << endl;

#include "iostream.h"

#include "iomanip.h"

void main()

{ char s[]="БГУиР факультет КСиС";

cout << setw(30) << setiosflags(ios::right) << s << endl;

cout << setw(30) << setiosflags(ios::left) << s << endl;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]