Programmer’s Reference



страница19/19
Дата21.09.2016
Размер2.35 Mb.
#10416
1   ...   11   12   13   14   15   16   17   18   19

Програмен съвет


Докато традиционните низове във С – стил са били винаги прости за употреба , С++ - низовите класове правят низовото манипулиране извънредно лесно . Например , използвайки string обекти може да добавите оператор за присвояване на ограден с кавички низ към string , релационни оператори за сравняване на низове и голямо разнообразие от низоманипулиращи функции които правят поднизовите операции удобни . Например , разгледайте следната програма :

// Демонстрира string



# include < iostream >

# include < string >

using namespace std ;



int main ( )

{

string str1 = “ abcdefghijklmnopqrstuvwxyz “ ;

string str2 ;

string str3 ( str1 ) ;

str2 = str1.substr ( 10 , 5 ) ;

cout << “str1 : “ << str1 << endl ;

cout << “str2 : “ << str2 << endl ;

cout << “str3 : “ << str3 << endl ;

str1.replace ( 5 , 10 , “ “ ) ;
cout << “ str1.replace ( 5 , 10 , \“ \“ ) : “

<< str1 << endl ;

str1 = “ one “ ;

str2 = “ two “ ;

str3 = “ three “ ;

cout << “str1.compare ( str2 ) : “ ;

cout << str1.compare ( str2 ) << endl ;

if ( str1 < str2 ) cout << “str1 is less than str2 \n “ ;

string str4 = str1 + “ “ + str2 + “ “ + str3 ;

cout << “str4 : “ << str4 << endl ;

int i = str4.find ( “ wo “ ) ;

cout << “ str4.substr ( i ) : “ << str4.substr ( i ) ;

return 0 ;

}

Изхода на програмата е :

str1 : abcdefghijklmnopqrstuvwxyz

str2 : klmno

str3 : abcdefghijklmnopqrstuvwxyz

str1.replace ( 5 , 10 , “ “ ) : abcdepqrstuvwxyz

str1.compare ( str2 ) : -1

str1 is less than str2

str4 : one two three

str4.substr ( i ) : wo three

Забележете леснотата с която низовото манипулиране е изпълнено . Например , + се използва да свърже низове и < се използва да сравни два низа . Изпълнявайки тези операции със използване на С – стиловите , нулево – терминирани низове , е по – удобно от извикването на strcat ( ) и



strcmp ( ) където са изисквани . Понеже С++ string обектите могат да бъдат свободно смесвани със С – стиловите , нулево – терминирани низове , няма неудобство да ги използвате в програми – а има значителна ползи .

Изключения


Стандартната С++ библиотека дефинира два хедъра които се отнасят за изключенията : < exception > и < stdexcept > . Изключенията се използват да докладват за грешни условия . Всеки от тези хедъри е разгледан тук .

< exception >


Хедъра < exception > дефинира класове , типове и функции които са свързани със манипулирането на изключения . Класовете дефинирани от < exception > са показани тук :

Клас Предназначение

еxception Базов клас за всички изключения дефинирани в

стандартната С++ библиотека

bad_exception Типа изключение върнато от

функцията unexpected ( )

Типовете дефинирани от < exception > са :

Тип Значение

terminate_handler typedef void ( *terminate_handler )( ) ;



unexpected_handler typedef

void ( * unexpected_handler ) ( ) ;

Функциите са показани тук :



Функция Описание

terminate_handler Установява функцията

set_terminate ( terminate_handler fn ) определена от fn като

throw ( ) ; прекъсващ манипулатор .

Връща се указател към стария

прекъсващ манипулатор



unexpected_handler Установява функцията

set_unexpected ( unexpected_handler fn ) определена от fn като

throw ( ) ; unexpected манипулатор .

Връща се указател към стария

unexpected манипулатор

void terminate ( ) ; Извиква прекъсващия

манипулатор когато не е

обработено фатално изключение ;

извиква abort ( ) по подразбиране

bool uncaught_exception ( ) ; Връща true ако е непрехванато

изключение

void unexpected ( ) ; Извиква манипулатора за

unexpected изключения когато

функция прехвърли неразрешено

изключение . По подразбиране се

извиква terminate ( )


< stdexcept >


Хедъра < stdexcept > дефинира няколко стандартни изключения които могат да бъдат прехвърлени от С++ - библиотечни функции и/или системата . Има два общи типа изключения дефинирани от < stdexcept > : логически грешки и грешки по време на изпълнение . Логически грешки стават при грешка на програмиста . Грешки по време на изпълнение се причиняват от грешки във библиотечните функции или runtime системата и са извън контрола на програмиста . Стандартните изключения дефинирани от С++ причинени от логически грешки са производни на базовия клас logic_error . Тези изключения са изброени тук :

Изключение Значение

domain_error Станала е грешка в областта

invalid_argument Използва се невалиден аргумент

във извикването на функция



length_error Oпит за създаване на обект

който е твърде голям



out_of_range Аргумента на функция не е

във изисквания интервал

Следните грешки по време на изпълнение са производни от базовия клас runtime_error :


Изключение Значение

overflow_error Станало е аритметично препълване

range_error Станала е грешка във вътрешния интервал

underflow_error Станало е препълване след десетичната точка .





Каталог: books
books -> Тайнствената сила на пирамидите Богомил Герасимов Страхът на времето
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване


Сподели с приятели:
1   ...   11   12   13   14   15   16   17   18   19




©obuch.info 2024
отнасят до администрацията

    Начална страница