Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры ппвис 2 часть с++.doc
Скачиваний:
26
Добавлен:
01.03.2016
Размер:
265.22 Кб
Скачать
  1. 50. 51.Синтаксис и использование команды try, catch. Варианты использования catch. Генерация исключений командой throw.

try

{

throw[]

}

catch()

try {} – тот участок программы, который при нормальном выполнении catch пропускается и программы продолжается. После try следует 1-н или несколько секций catch. Все они относятся к try если в какой-либо точке try обнаружит исключительную ситуацию. В этом случае возбуждается исключение с аргументом соответствующего типа – последовательно просматривается catch, выполняется действие, прописанное в catch, программа выполняется далее. Последним ставится catch(…) – она выполняется, если ни один из catch не подходит. Как только исключение возбуждается, то действие try прекращается.

Объявление:

throw [аргумент];

в этой инструкции аргумент означает сгенерированное значение. Выполнение это инструкции должно происходить внутри блока try, либо в функции, вызванной из блока try. В случае генерации исключения, которому не соответствует ни одна инструкция catch, может произойти аварийное завершение программы. При возникновении такого необратимого исключения вызывается функция terminate(), которая по умолчанию вызывает функцию abort(), приводящую к завершению выполнения программы.

try {

.

throw 10;

throw “text”;

throw 'a’;

throw;

}

catch(int) {…}

catch(chat*) {…}

catch(char) {…}

catch(…) {…}

52. Варианты генерации и обработки исключений.

main() {

int x1, x2;

double y;

try {

cout<<"Enter two integers"<<endl<<"x1=";

cin>>x1;

cout<<"x2=";

cin>>x2;

if (x2==0)

throw x2;

}

catch (int)

{

char s;

cout<<"\nERROR, bad operation"<<endl;

cout<<"Do you want to cantinue operation?(Y,N)";

cin>>s;

cout<<endl;

if (s=='y')

{

cout<<endl<<"Enter x2= ";

cin>>x2;

}

else

return 1;

};

y=x1/x2;

cout<<"\n"<<"Result y= "<<y<<endl;

return 0;}

54. Библиотека ввода-вывода Standard C++. Иерархия классов.

При подключении заголовочного файла iostream.h автоматически создаются 4 стандартных потока:

  1. сin – стандартный поток ввода данных.

  2. сout – стандартный поток вывода данных.

  3. сerr – небуферизованный поток для стандартного вывода сообщений об ошибках.

  4. clog – буферизованный поток для стандартного вывода сообщений об ошибках.

Подключение этих потоков через <iostream>, конструктивно ввод/вывод базируется на 2-ух связанных но разных иерархиях класса. они производятся от базового класса, который является шаблоном. basic.ios

Typedef basic_ios<char> ios;

Typedef basic_istream<char, …> istream;

ios

Istream iostrim ostream

Ifstream fstream ofstream

istream - ввод

iostrim – ввод/вывод

ostream - вывод

ifstreamввод из файлов

fstreamдля обмена данных в двух направлениях

ofstreamвывод в файл

55. Библиотека Standard C++: класс istream.

Методы:

  1. Перегружены операторы >> (извлечение из потока) для всех встроенных типов. Причем ввод может управляться и форматироваться.

  2. int get() – посимвольный ввод (эти методы будут возвращать basic_istream)

  3. перегружена basic_istream get( [строка Е*], [кол-во символов int])

  4. basic_istream read(E*, int)

  5. здесь же описаны методы для произвольного и непроизвольного позиционирования SEEK() и TELL()

56. Библиотека Standard C++: класс ostream.

Методы:

  1. Перегружены операторы << для всех встроенных типов. Причем вывод может управляться и форматироваться.

  2. int put() – посимвольный вывод (эти методы будут возвращать basic_istream)

  3. basic_istream write(E*, int)

57. Методы форматируемого вывода библиотеки Standard C++.

1)использование флагов (хранятся в cin )

cout.flags(ios::scientific|ios::hex); //задание новых флагов

сout<<’\n’<<1.2<<”; (dec) 110 = (hex) ”<<110;

cout.flags(oldfmtflags); //восстановление флагов

der – 10-ая система

oct – 8-ая система

fixed – представление числа с фиксированной точкой

left – выравнивание

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

Могут размещаться внутри команд ввода/вывода. Вызываются напрямую.

der – 10-ая система

oct – 8-ая система

fixed – представление числа с фиксированной точкой

left, right – выравнивание

setw() – задает поле вывода

endl – признак конца строки

пример:

cout<<setw(20)<<left<<s;

cout<<setw(10)<<right<<kol<<endl;

3)использование функций

cout.wight(10);

58. Методы вывода библиотеки Standard C++

Методы:

1)Перегружены операторы >> (извлечение из потока) для всех встроенных типов. Причем ввод может управляться и форматироваться.

2)int get() – посимвольный ввод (эти методы будут возвращать basic_istream)

перегружена basic_istream get( [строка Е*], [кол-во символов int])

3)basic_istream read(E*, int)

59. Методы ввода библиотеки Standard C++.

Методы:

  1. Перегружены операторы << для всех встроенных типов. Причем вывод может управляться и форматироваться.

  2. int put() – посимвольный вывод (эти методы будут возвращать basic_istream)

  3. basic_istream write(E*, int)

60. Использование флагов библиотеки ввода-вывода Standard C++.

1)использование флагов (хранятся в cin )

cout.flags(ios::scientific|ios::hex); //задание новых флагов

сout<<’\n’<<1.2<<”; (dec) 110 = (hex) ”<<110;

cout.flags(oldfmtflags); //восстановление флагов

der – 10-ая система

oct – 8-ая система

fixed – представление числа с фиксированной точкой

left – выравнивание

61. Использование манипуляторов библиотеки ввода-вывода Standard C++.

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

Могут размещаться внутри команд ввода/вывода. Вызываются напрямую.

der – 10-ая система

oct – 8-ая система

fixed – представление числа с фиксированной точкой

left, right – выравнивание

setw() – задает поле вывода

endl – признак конца строки

пример:

cout<<setw(20)<<left<<s;

cout<<setw(10)<<right<<kol<<endl;

62. Общая схема файлового ввода-вывода средствами библиотека Standard C++.

<fstream>

Содержит методы:

open([“строка”], [“режим”])

close()

  1. Обеспечивает работу со стандартными потоками в режиме форматирования и без него.

  2. Обеспечивает работу с файлами.

  3. Обеспечивает работу со строковыми потоками.

ofstream Out;

Out.open(k); //нужно контролировать исход действия

Режимы: in, out, text, binary

app – добавление в конец

ate - открытие файла, указатель указывает на его конец

контроль конца файла ( !In.end() ) //не конец

63. Средства произвольного позиционирования библиотеки Standard C++.

SEEK( long OFFSET, int whence)

OFFSETсмещение байта, значение которого может быть положительным или отрицательным

whenceуказывает откуда считывать значение:

SEEK_CURсмещение относительно текущей позиции

SEEK_ENDсмещение относительно конца файла

SEEK_SETсмещение относительно начала файла