[Оглавление]
[Вниз]

ПРИЛОЖЕНИЕ 2

КОНСТАНТЫ ПРЕДЕЛЬНЫХ ЗНАЧЕНИЙ

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

Таблица П2.1 Предельные значения для целочисленных типов - файл limits. h

Имя константы Стандартное значение Смысл
CHAR_BIT 8 Число битов в байте
SCHAR_MIN -127 Минимальное значение для signed char
SCHAR_MAX +127 Максимальное значение signed char
OCHAR_MAX 255 Максимальное значение unsigned char
CHAR_MIN 0 SCHAR_MIN Минимальное значение для char
CHAR_MAX UCHAR_MAX SCHAR_MAX Максимальное значение для char
MB_LEN_MAX 1 Минимальное число байт в много байтовом символе
SHRT_MIN -32767 Минимальное значение для short
SHRT_MAX +32767 Максимальное значение для short
USHRT_MAX 65535 Максимальное значение unsigned short
INT_MIN -32767 Минимальное значение для int
INT_MAX +32767 Максимальное значение для int
UINT_MAX 65535 Максимальное значениe unsigned int
LONG_MIN -2147483647 Минимальное значение для long
LONG_MAX +2147483647 Максимальное значение для long
ULONG_MAX 4294967295 Максимальное значение unsigned long

В табл. П2.2 префикс FL.1_ соответствует типу float; для типа double используется префикс DBL_.

Таблица П2.2 Константы для вещественных типов файл floaf. h

Имя константы Стандартное значение Смысл
FLT_RADIX 2 Основание экспоненциального представления, например:2,16
FLT_DIG 6 Количество верных десятичных цифр
FLT_EPSILOH 1Е-5 Минимальное х, такое, что 1.0 + х not= 1.0
Fl.T_MANT_DIG Количество цифр по основанию FLT RADIX в мантиссе
FLT_MAX 1E+37 Максимальное число с плавающей точкой
ELT_MAX_EXP Максимальное n, такое, что FLT_ RADIXn - 1 представимо в виде числа типа float
FLT_MAX_10_EXP 38 Максимальное целое n, такое, что 10я представимо как float
FI.T_MIN 1E-37 Минимальное нормализованное число с плавающей точкой типа float
FI.T_MIN_EXP Минимальное n, такое, что 10я представимо в виде нормализованного числа
FLT_MIN_10_EXP -37 Минимальное отрицательное целое n, такое, что 10я - в области определения чисел типа float
DBL_DIG 10 Количество верных десятичных цифр для типа double
DBL_EPSILON 1E-9 Минимальное х, такое, что 1.0 + х not= 1.0, где х принадлежит типу double
DBL_MANT_DIG Количество цифр по основанию FLT_ RADIX в мантиссе для чисел типа double
DBL_ MAX 1E+37 Максимальное число с плавающей точкой типа double
DBL_MAX_EXP Максимальное n, такое, что FLT_RADIXn -1 представимо в виде числа типа double
DBL_MAX_10_EXP +37 Максимальное целое n, такое, что 10я представимо как double
DBL_MIN 1E-37 Минимальное нормализованное число с плавающей точкой типа double
DBL_MIN_EXP Минимальное n, такое, что 10 представимо в виде нормализованного числа типа double
DBI._MIN_10_EXP -37 Минимальное отрицательное целое n, такое, что 10я - в области определения чисел типа double

ПРИЛОЖЕНИЕ 3

СТАНДАРТНАЯ БИБЛИОТЕКА ФУНКЦИЙ ЯЗЫКА СИ

Таблица ПЗ.1 Математические функции - файл math. h

Функция Прототип и краткое описание действий
abs int abs(int i); Возвращает абсолютное значение целого аргумента i.
acos double асоs(double х); Функция арккосинуса. Значение аргумента должно находиться в диапазоне от -1 до +1.
asin double asin(double х); Функция арксинуса. Значение аргумента должно находиться в диапазоне от -1 до +1.
atan double atan(double х) ; Функция арктангенса.
atan2 double atan2(double у, double х); Функция арктангенса от значения у/х.
cabs double cabs(struct complex znum). Вычисляет абсолютное значение комплексного числа znua. Определение структуры (типа) complex - в файле math. h.
cos double cos(double x). Функция косинуса. Угол (аргумент) задается в радианах.
cosh double cosh(double x). Возвращает значение гиперболического косинуса х.
exp double exp(double x). Вычисляет значение е (экспоненциальная функция).
fabs double fabs(double x). Возвращает абсолютное значение вещественного аргумента х двойной точности.
floor double floor(double x). Находит наибольшее целое, не превышающее значения х. Возвращает его в форме double.
fmod double fmod(double x, double у). Возвращает остаток от деления нацело х на у.
hypot double hypot(double x, double у). Вычисляет гипотенузу х прямоугольного треугольника по значениям катетов х, у (z2 = x1 + у1)
labs long labs(long x). Возвращает абсолютное значение целого аргумента long х.
ldехр double ldexp(double v, int e). Возвращает значение выражения v2.
log double log(double x). Возвращает значение натурального логарифма (ln x).
log1() double log10(double x). Возвращает значение десятичного логарифма (log10 x).
poly double poly(double x, int n, double c[] ). Вычисляет значение полинома: c[n)xn + c[n - 1] xn-1 + ... + c[l]x + c[0]
pow double pow(double x, double y). Возвращает значение хn, т.е. х в степени у.
pow10 double pow10(int p). Возвращает значение 10.
sin double sin(double x). Функция синуса. Угол (аргумент) задается в радианах.
sinh double sinh(double x). Возвращает значение гиперболического синуса для х.
sqrt double sqrt(double x). Возвращает положительное значение квадратного корня -yх .
tan double tan(double x). Функция тангенса. Угол (аргумент) задается в радианах.
tanh double tanh(double x). Возвращает значение гиперболического тангенса для х.

Таблица ПЗ.2 Функции проверки и преобразования символов - файл ctype. h

Функция Прототип и краткое описание действий
isalnum int isalnum(int с). Дает значение не нуль, если с - код буквы или цифры (А + Z, a + z, 0 + 9), и нуль - в противном случае.
isalpha int isalpha(int с). Дает значение не нуль, если с - код буквы (А + 2, а + z), и нуль - в противном случае.
isascii int isascii(int с). Дает значение не нуль, если с есть код ASCII, т.е. принимает значение от 0 до 127, в противном случае - нуль.
iscntrl int iscntrl(int с). Дает значение не нуль, если с - управляющий символ с кодами 0х00 + 0x01F или 0x7F, и нуль - в противном случае.
isdigit int isdigit(int с). Дает значение не нуль, если с - цифра (0 + 9) в коде ASCII, и нуль - в противном случае.
isgraph int isgraph(int с). Дает значение не нуль, если с - видимый (изображаемый) символ с кодом (0х21 + Ох7Е), и нуль - в противном случае.
islower int islower(int с). Дает значение не нуль, если с - код символа на нижнем регистре (а + z), и нуль - в противном случае.
isprint int isprint(int с). Дает значение не нуль, если с - печатный символ с кодом (0х20 + 0х7Е), и нуль - в противном случае.
ispunct int ispunct(int с). Дает значение не нуль, если с - символ-разделитель (соответствует iscntrl или isspase), и нуль - в противном случае.
isspace int isspace(int с). Дает значение не нуль, если с - обобщенный пробел: пробел, символ табуляции, символ новой строки или новой страницы, символ возврата каретки (0х09 + OxOD, 0х20), и нуль - в противном случае.
isupper int isupper(int с). Дает значение не нуль, если с - код символа на верхнем регистре (А + Z), и нуль - в противном случае.
isxdigit int isxdigit(int с). Дает значение не нуль, если с - код шестнадцатеричной цифры (0 + 9, А + F, а + f), и нуль - в противном случае.
toascii int toascii(int с). Преобразует целое число с в символ кода ASCII, обнуляя все биты, кроме младших семи. Результат от 0 до 127.
tolower int tolower(int с). Преобразует код буквы с к нижнему регистру, остальные коды не изменяются.
toupper int toupper(int с). Преобразует код буквы с к верхнему регистру, остальные коды не изменяются.

Таблица П3.3.Функция ввода-вывода для стандартных файлов - файл stdio. h

Функция Прототип и краткое описание действии
getch int getch(void). Считывает один символ с клавиатуры без отображения на экране.
getchar int getchar(void). Считывает очередной символ из стандартного входного файла (stdin).
gets char *gets(char *s). Считывает строку s из стандартного входного файла (stdin).
printf int printf(char *format [, argument, ...] ). Функция форматированного вывода в файл stdout.
putchar int putchar(int с). Записывает символ с в стандартный файл выхода (stdout).
puts int puts(const char *s). Записывает строку s в стандартный файл вывода (stdout).
scanf int scanf(char *format[, argument, ...]). Функция форматированного ввода из файла stdin.
sprintf int sprintf(char *s,char *format[, argument,... ]). функция форматированной записи в строку s.
sscanf int sscanf(char *s,char *format [, address,... ]). Функция форматированного чтения из строки s.
ungetch int ungetch(int с). Возвращает символ с в стандартный файл ввода stdin, заставляя его быть следующим считываемым символом.

Таблица ПЗ.4. Функции для работы со строками - файлы string. h, stdlib. h

Функция Прототип и краткое описание действий
atof double atof(char *str). Преобразует строку str в вещественное число типа double.
atoi int atoi(char *str). Преобразует строку str в десятичное целое число.
atol long atol(char *str). Преобразует строку str в длинное десятичное целое число.
itoa char *itoa(int v, char *str, int baz). Преобразует целое v в строку str. При изображении числа используется основание baz (2 < baz < 36). Для отрицательного числа и baz = 10 первый символ - "минус" (-).
ltoa char *ltoa(long v, char *str, int baz). Преобразует длинное целое v в строку str. При изображении числа используется основание baz (2 <= baz <= 36).
strcat char *strcat(char *sp, char *si). Приписывает строку si к строке sp (конкатенация строк).
strchr char *strchr(char *str, int с). Ищет в строке str первое вхождение символа с.
strcmp int strcmp(char *strl, char *str2). Сравнивает строки strl и str2. Результат отрицателен, если strl < str2; равен нулю, если strl == str2 и положителен, если strl > str2 (сравнение без знаковое).
strcpy char *strcpy(char *sp, char *si). Копирует байты строки si в строку sр.
strcspn int strcspn(char *strl, char *str2). Определяет длину первого сегмента строки strl, содержащего символы, не входящие во множество символов строки str2.
strdup char *strdup(const char *str). Выделяет память и переносит в нее копию строки str.
strlen unsigned strlen(char *str). Вычисляет длину строки str.
strlwr char *strlwr(char *str). Преобразует буквы верхнего регистра в строке в соответствующие буквы нижнего регистра.
strncat char *strncat(char *sp, char *si, int kol). Приписывает kol символов строки si к строке sp (конкатенация).
strncmp int strncmp(char *str1, char *str2, int kol). Сравнивает части строк strl и str2, причем рассматриваются первые kol символов. Результат отрицателен, если strl < str2; равен нулю, если strl == str2 и положителен, если strl > str2.
strncpy char *strncpy( char *sp, char *si, int kol). Копирует kol символов строки si в строку sp ("хвост" отбрасывается или дополняется пробелами).
strnicmp char *stricmp(char *strl, char *str2, int kol). Сравнивает не более kol символов строки strl и строки str2, не делая различия регистров (см. функцию strncmp ()).
strnset char *strnset(char *str, int с, int kol). Заменяет первые kol символов строки str символом с.
strpbrk char *strpbrk(char *strl, char *str2). Ищет в строке strl первое появление любого из множества символов, входящих в строку str2.
strrchr char *strrchr(char *"tr, int с). Ищет в строке str последнее вхождение символа с.
strset int strset(char *str, int с). Заполняет строку str заданным символом с.
strspn int strspn(char *strl, char *str2). Определяет длину первого сегмента строки strl, содержащего только символы, из множества символов строки str2.
strstr char *strstr(const char *strl, const char *str2). Ищет в строке strl подстроки str2. Возвращает указатель на тот элемент в строке strl, с которого начинается подстрока str2.
strtod double *strtod(const char *str, char **endptr). Преобразует символьную строку str в число двойной точности. Если endptr не равен NULL, то *endptr возвращается как указатель на символ, при достижении которого прекращено чтение строки str.
strtok char *strtok(char *strl, const char *str2). Ищет в строке strl лексемы, выделенные символами из второй строки.
strtol long *sfcrtol(const char *str, char **endptr, int baz). Преобразует символьную строку str к значению "длинное число" с основанием baz (2 < baz < 36). Если endptr не равен NULL, то *endptr возвращается как указатель на символ, при достижении которого прекращено чтение строки str.
strupr char *strupr(char *str). Преобразует буквы нижнего регистра в строке str в буквы верхнего регистра.
ultoa char *ultoa(unsigned long v, char *str, int baz). Преобразует беззнаковое длинное целое v в строку str.

Таблица П3.5 Функция для выделения и освобождения памяти -файлы stdlib. h, alloc. h

Функция Прототип и краткое описание действии
calloc void *calloc(unsigned n, unsigned m). Возвращает указатель на начало области динамически распределенной памяти для размещения n элементов по а байт каждый. При неудачном завершении возвращает значение NULL.
coreleft unsigned coreleft (void); - для моделей памяти tiny, small, medium.
unsigned long coreleft (void);-для других моделей памяти.Возвращает значение объема неиспользованной памяти, функция уникальная для DOS, где приняты упомянутые модели памяти.
free void free(void *b1). Освобождает ранее выделенный блок динамически распределяемой памяти с адресом первого байта b1.
malloc void *malloc(unsigned s). Возвращает указатель на блок динамически распределяемой памяти длиной s байт. При неудачном завершении возвращает значение NULL.
realloc void *realloc(void *bl, unsigned ns). Изменяет размер ранее выделенной динамической памяти с адресом начала b1 до размера ns байт.Если b1 равен NULL, то функция выполняется как malloc ().

Таблица П3.6 Функции для работы с терминалом в текстовом режиме - файл conio. h

Функция Прототип и краткое описание действий
clreol void clreol(void). Стирает символы от позиции курсора до конца строки в текстовом окне.
clrscr void clrscr(void). Очищает экран.
cgets char *cgets(char *str). Выводит на экран строку str.
cprintf int cprintf (char *format [, argument, ...]). Выводит форматированную строку в текстовое окно, созданное функцией window ().
cputs int cputs(char *str). Считывает в символьный массив str строку с клавиатуры (консоли).
cscanf int cscanf (char *format [, address, ...]). Функции ввода-вывода информации, которые используются при работе с терминалом в текстовом режиме
delline void delline(void). Удаляет строку в текстовом окне (где находится курсор).
gotoxy void gotoxy(int x, int у). Перемещает курсор в позицию текстового окна с координатами (x, у).
highvideo void highvideo(void). Повышает яркость символов, выводимых после нее на экран.
move text int move text(int x0,int y0,int xl,int y2,int x.int y). Переносит текстовое окно в область экрана, правый верхний угол которой имеет координаты (x, у). Координаты угловых точек окна - (х0, у0), (х1, у1).
normvideo void normvideo(void). Устанавливает нормальную яркость выводимых на экран символов.
textattr void textattr(int newattr). Устанавливает атрибуты (фон, цвет) символов, выводимых на экран.
textbackground void textbackground(int с). Устанавливает цвет фона по значению параметра с.
textcolor void textcolor(int с). Устанавливает цвет символов по значению параметра с.
textmode void textmode(int m). Переводит экран в текстовый режим по значению параметра m.
wherex int wherex(void). Возвращает значение горизонтальной координаты курсора.
wherey int wherey(void). Возвращает значение вертикальной координаты курсора.
window void window(int x0,int y0,int xl,int yl). Создает текстовое окно по координатам угловых точек (х0, у0), (х1, yl).

Функции из табл. ПЗ.6 поддерживаются только на IBM PC и совместимых с ним компьютерах.

Таблица П3.7 Специальные функции

Функция Прототип и краткое описание действий Местонахождение прототипа
signal int signal(int sig). Вызывает программный сигнал с номером sig. Используется для обработки исключительных ситуаций в языке Си. signal.h
sound void sound(unsigned f). Вызывает звуковой сигнал с частотой f Гц. dos.h
srand void srand(unsigned seed). Функция инициализации генератора случайных чисел (rand); seed - любое беззнаковое целое число. stdlib.h

ПРИЛОЖЕНИЕ 4

ГРАФИЧЕСКАЯ БИБЛИОТЕКА в С++

Графические средства в языке Си++ и в его предшественнике - в языке Си полностью отсутствуют. Все возможности для работы с графикой конкретные реализации предоставляют в виде дополнительных библиотек графических функций. В нескольких местах книги были использованы в иллюстративных целях возможности графического представления объектов (принадлежащих классам, вводимым программистом). В качестве инструмента для работы с графикой была использована графическая библиотека под MS-DOS компиляторов фирмы Borland, так как эти компиляторы наиболее доступны в нашей стране, особенно на маломощных ПЭВМ, и чаще всего используются в учебном процессе. Никаких других причин для выбора именно этой графической библиотеки и этих компиляторов не было. Пояснения по отдельным функциям графической библиотеки даны в основном тексте соответствующих глав. Здесь приводится список библиотечных функций, которые могут быть полезными при самостоятельном решении задач, связанных с графикой. Приводимой информации иногда оказывается недостаточно для безошибочного применения той или иной функции, но возможность получения справок при работе с компилятором в диалоговом режиме обычно позволяет быстро устранить возникающие затруднения.

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

Таблица П4.1 Функции для управления графической системой

Функция Прототип и краткое описание действий
Closegraph void far closegraph(void). Перевод системы в текстовый режим (из графического режима)
graphdefaults void far graphdefaults(void). Устанавливает по умолчанию все параметры графической системы (параметры заполнения, палитру, правила выравнивания текста и т.п.)
_graphfreemem void far _graphfreemem(void far *ptr, unsigned size). Введение этой функции в программу позволяет программисту отслеживать запросы на освобождение size байт памяти функциями графической библиотеки
_graphgetmem void far * far _graphgetmem(unsigned size). Введение этой функции в программу позволяет программисту отслеживать запросы на выделение size байт памяти функциями графической библиотеки
initgraph void far initgraph (int far *graphdriver, int far *graphmode, char far *pathtodriver). Перевод системы в графический режим (из текстового режима), инициализация графики
installuserdriver int far installuserdriver(char far *name, int huge *detect)(void)). Добавляет новый графический драйвер name (.BGI) в таблицу драйверов BGI (BGI - Borland Graphics Interface)
installuserfont int far installuserfont(char far *name). Устанавливает шрифты, содержащиеся в файле name (.CHR)
registerbgidriver int registerbgidriver(void (*driver)(void)). Регистрирует драйвер driver, встроенный в текущую выполняемую программу
registerbgifont int registerbgifont(void (*font)(void)). Регистрирует шрифт font, встроенный в текущую выполняемую программу
restorecrtmode void far restorecrtmode(void). Временный переход в текстовый режим, из которого была вызвана функция initgraph ()
setgraphbufsize unsigned far setgraphbufsize(unsigned bufsize). Устанавливает размер внутреннего буфера для графических функций

Таблица П4.2 Функции для установки параметров изображения

Функция Прототип и краткое описание действий
setactivepage void far setactivepage(int page). Устанавливает активной для вывода графики страницу page
setallpalette void far setallpalette(struct palettetype fax *palette). Устанавливает все цвета палитры
setaspectratio void far setaspectratio(int xasp, int yasp). Устанавливает коэффициент сжатия по координатам х и у
setbkcolor void far setbkcolor(int color). Установка цвета фона
setcolor void fax setcolor(int color). Установка цвета точки (изображения)
_setcursortype(прототип содержится в файле соnio.h) void setcursortype(int cur_t). Устанавливает тип отображения курсора для текстовых режимов
setfillpattern void far setfillpattern (char far *upattern, int color). Установка заданного пользователем шаблона закраски экрана или области экрана
setgraphmode void far setgraphmode(int mode). Переход к графическому режиму, отличному от установленного функцией initgraph ()
setfillstyle void fax setfillstyle(int pattern, int color). Установка одного из стандартных шаблонов заполнения экрана или области экрана
setlinestyle void far setlinestyle(int linestyle, unsigned upattern, int thickness). Установка толщины и типа изображаемой линии
setpalette void far setpalette(int colornum, int color). Устанавливает один из цветов палитры
setrgbpalette void far setrgbpalette(int colornum, int red, int green, int blue). Устанавливает цвета для графического адаптера IBM 8514
settextjustify void far settextjustify(int horiz, int vert). Установка правил выравнивания текста при горизонтальном или вертикальном выводе функцией outtext ()
settextstyle void far settextstyle(int font, int direction, int charsize). Установка стиля (шрифт, размеры символов) текста, выводимого функцией outtext()
setusercharsize void far setusercharsize(int multx, int divx, int multy, int divy). Установка размеров символов, выводимых в графическом режиме
setviewport void far setviewport(int left, int top, int righ, int bottom, int clip). Установка размеров текущего окна экрана для вывода изображений или текста
setvisualpage void far setvisualpage(int pagе). Делает видимой графическую страницу page
setwritemode void far setwritemode(int mode). Устанавливает режим вывода линий в графическом режиме

Таблица П4.3 Функции для получения изображения на экране

Функция Прототип и краткое описание действий
arc void far arc(int x, int у, int stangle, int endangle, int radius). Вычерчивание дуги окружности с центром (x, у)
bar void far bar(int left, int top, int right, int bottom). Вычерчивание закрашенного прямоугольника
bar3d void far bar3d(int left, int top, int right, int bottom, int depth, int topflag). Вычерчивание закрашенного параллелепипеда
circle void far circle(int x, int y, int radius). Вычерчивание окружности с центром (x, у)
cleardevice void fax cleardevice(void). Очистка экрана цветом фона
clearviewport void far clearviewport(void). Очистка ранее установленного окна графического экрана
drawpoly void far drawpoly(int numpoints, int far *polypoints). Вычерчивание контура многоугольника с numpoints вершинами
ellipse void far ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius). Вычерчивание дуги эллипса с центром (x, у)
fillellipse void far fillellipse(int x, int y, int xradius, int yradius). Вычерчивание эллипса с центром в точке (x, у) и заполнение его установленным ранее шаблоном закраски
fillpoly void far fillpoly(int numpoints, int far *polypoints). Вычерчивание закрашенного многоугольника с numpoints вершинами и заполнение его установленным ранее шаблоном закраски
floodfill void far floodfill(int x, int y, int border). Заполнение установленным ранее шаблоном закраски ограниченной области экрана, в которую попадает точка с координатами (x, у)
linе void far line(int x1, int y1, int x2, int y2). Вычерчивание линии от (x1, y1) до (x2, y2)
linerel void far linerel (int dx, int dy). Вычерчивание линии из текущей точки в точку, отстоящую от нее на величину (dx, dy)
lineto void far lineto(int x, int y). Проведение линии из текущей точки в точку с абсолютными координатами x, у
moverel void far moverel(int dx, int dy). Перемещение указателя позиции из текущей точки в точку, отстоящую от нее на величину (dx, dy)
moveto void far moveto(int x, int у). Перемещение указателя позиции из текущей точки в точку с абсолютными координатами x, у
outtext void far outtext(char far *textstring). Вывод текстовой строки textstring, начиная с текущей позиции
outtextxy void far outtextxy(int x, int у, char far *textstring). Вывод текстовой строки textstring, начиная с точки с координатами x, у
pieslice void far pieslica(int x, int у, int stangle, int endangle, int radius); Вычерчивание закрашенного сектора круга с центром в точке (x, у)
putimage void far putimage (int left, int top, void far *bitmap, int op). Вывод ранее сохраненного графического изображения в окно экрана с левым верхним углом (laft, top)
putpixel void far putpixel (int x, int y, int color). Вычерчивание точки по координатам x, у
rectangle void far rectangle(int laft, int top, int right, int bottcom). Вычерчивание прямоугольника с заданными вершинами
sector void far sector(int x, int y, int stangle, int endangle, int xradius, int yradius). Вычерчивание сектора эллипса с центром в точке (x, у) и заполнение его установленным ранее шаблоном закраски

Таблица П4.4 Функции для получения параметров изображения

Функция Прототип и краткое описание действий
detectgraph void far detectgraph(int far *graphdriver, int far *graphmode). Функция возвращает тип вашего графического адаптера graphdriver и режим graphmode с разрешением, максимально возможным для данного адаптера
getarccoords void far getarccoord*(struct arccoordstype far *arccoords). Возвращает в структуре arccoords значения координат дуги, построенной при последнем обращении к arc ()
getaspectratio void far getaspectratio(int far *xasp, int far *yasp). Возвращает коэффициент сжатия (уаsр/хаsр) по координатам x и у
getbkcolor int far getbkcolor(void). Возвращает номер текущего цвета фона
getcolor int far getcolor(void). Возвращает номер текущего цвета изображения
getdefaultpalette struct palattetype *far getdefaultpalette(void). Возвращает указатель на структуру типа palettype, содержащую информацию о палитре (наборе цветов), устанавливаемой по умолчанию функцией initgraph ()
getdrivername char *far getdrivername(void). Возвращает указатель на строку, содержащую название текущего графического драйвера
getfillpattern void far getfillpattern(char far *pattern). Получение кодов, применяемых пользователем для задания шаблона заполнения экрана или его. области
getfillsettings void far getfillsettings(struct fillsettingstype far *fillinfo). Возвращает в структуре fillinfo значения параметров заполнения и цвета экрана
getgraphmode int far getgraphmode(void). Возвращает номер графического режима
getimage void far getimage(int left, int top, int right, int bottom, void far *bitmap). Получение и сохранение в области памяти, на которую указывает bitmap, окна экрана, заданного координатами вершин
getlinesettings void far getlinesettings (struct linesettingstype far *lineinfo). Возвращает в структуре lineinfo значения параметров линии
getmaxcolor int far getmaxcolor(void). Возвращает наибольший номер цвета, который возможно установить в текущем режиме графического драйвера с помощью функции setcolor ()
getmaxmode int far getmaxmode(void). Возвращает наибольший номер режима, который возможно установить для текущего графического драйвера
getmodename char *far getmodename (int mode_number). Возвращает указатель на строку с названием графического режима mode_number
getmoderange void far getmoderange(int graphdriver, int far *lomode, int far *himode). Возвращает диапазон доступных графических режимов для графического драйвера graphdrivr
getmaxx int far getmaxx(void). Возвращает целое значение, равное размеру экрана по горизонтали (максимальное значение х)
getmaxy int far getmaxy(void). Возвращает целое значение, равное размеру экрана по вертикали (максимальное значение у)
getpalette void far getpalette(struct palettetype far *palette). Выдает указатель palеtte на структуру типа palette, содержащую информацию о текущей палитре (наборе цветов)
getpalettesize int far getpalettesize(void). Возвращает количество цветов, доступных в текущем графическом режиме
getpixel unsigned far getpixel(int х, int у). Возвращает цвет заданной (х, у) точки
gettextxettings void far gattextxettings(struct textsettingstype far *texttypeinfo). Возвращает в структуре texttypeinfo значения параметров текста
getviewsettings void far getviewaettings (struct viewporttype far *viewport). Возвращает в структуре viewport значения параметров окна экрана
getx int far getx(void). Возвращает целое значение координаты х текущей позиции на экране
gety int far gety(void). Возвращает целое значение координаты у текущей позиции на экране
graphresult int far graphreault(void). Возвращает номер ошибки графической операции (целое число от -15 до -1); значение 0 говорит об отсутствии ошибок
grapherrormsg char *far grapherrormsg(int errorcode). Возвращает указатель на строку, содержащую описание ошибки номер errorcode
imagesize unsigned far imagesize(int left, int top, int right, int bottom). Возвращает объем буфера, нужного для сохранения графической информации в окне экрана с заданными вершинами
textbelght int far textheight(char far *textstring). Возвращает целое значение высоты в пикселах символов из строки textstring
textwidth int far textwidth(char far *textstring). Возвращает целое значение ширины строки символов textstring

ПРИЛОЖЕНИЕ 5

КЛАССЫ И КОМПОНЕНТНЫЕ ФУНКЦИИ БИБЛИОТЕКИ ПОТОКОВОГО ВВОДА-ВЫВОДА В СИ++

О библиотеке классов потокового ввода-вывода подробно говорилось в главе 11. В данном приложении приведены только краткие сведения о компонентных функциях и других средствах, использование которых позволяет реализовать обмен с потоками. Многие из перечисленных ниже функций уже рассмотрены в главе 11.

Там же приведены сведения об иерархии классов в библиотеке. Подробное изучение остальных средств потокового ввода-вывода потребует обращения к документации по конкретному компилятору.

Таблица П5.1 Компонентные функции класса ios

Функция Прототип и краткое описание действий
bad int bad(). При ошибке возвращает ненулевое значение
bitalloc static long bitalloc(). Возвращает установку флагов. Полученное значение может быть использовано для очистки, установки или проверки флагов.
clear void clear (int =0). Устанавливает состояние потока в нуль.
eof int eof(). Возвращает ненулевое значение, если имеет место условие конца файла (EОF).
fail int fail (). Возвращает ненулевое значение, если операция обмена с потоком терпит неудачу.
fill char fill (). Возвращает текущее значение символа заполнения потока.
char fill(char). Заменяет значением параметра символ заполнения потока; возвращает ранее установленное значение символа заполнения.
flags long flags(). Возвращает текущее значение флагов форматирования.
long flags(long). Устанавливает флаги форматирования по значению параметра; возвращает ранее установленное значение флагов.
good int good (). Возвращает ненулевое значение, если не установлен ни один флаг состояния (ошибок нет).
precision int precision(). Возвращает текущее значение точности вещественных чисел.
int precision(int). Устанавливает точность вещественных чисел по значению параметра; возвращает предыдущее значение.
rdbuf streambuf* rdbuf(). Возвращает указатель на буфер (объект класса bufstream), связанный с потоком.
rdstate int rdstate(). Возвращает текущее состояние потока.
setf long self (long). Устанавливает флаги по значению параметра; возвращает предыдущие значения флагов
long self(long_ setbits, long_ field). Сбрасывает те биты состояния, которые отмечены в_ field , затем устанавливает биты по значению_ setbits.
tie ostream* tie(). Возвращает указатель на взаимосвязанный (tied) поток.
ostream* tie(ostream*). Организует поток, взаимосвязанный с потоком, на который указывает ostream*; возвращает указатель на предыдущий взаимосвязанный поток, если такой есть.
unself long unself(long). Очищает биты состояния потока, отмеченные переданным параметром; возвращает предыдущее значение битов.
width int width (). Возвращает текущее значение ширины.
int width(int). Устанавливает ширину, равной значению переданного параметра; возвращает предыдущее значение.

Таблица П5.2 Компонентные функции класса istream

Функция Прототип и краткое описание действий
gcount int gcount(). Возвращает число символов, извлеченных из потока последним обращением из прикладной программы.
get int get (). Передает из входного потока в прикладную программу следующий символ или EOF.
int get(signed char *,int 1en,char = '\n');
int get (unsigned char * , int len, char = ' \n '). Извлекает из входного потока символы и помещает их в буфер, на начало, которого указывает char *. Передача символов завершается, если прочитано (len -1) байтов, или встретился символ-разделитель (третий параметр в функции), или достигнут конец файла EOF. Завершающий нуль-символ всегда помещается в буфер, обозначая конец принятой строки, разделитель (последний параметр) не переносится в строку.
int get(unsigned char&);
int get(signed char&). Извлекает из входного потока символ и помещает его в байт, на который указывает параметр char&.
int get(streambuf&, char = '\n' ). Извлекает символы из входного потока и помещает их в буфер потока, на который ссылается streambuf. Чтение символов прекращается, если в потоке встретился символ-разделитель (второй параметр).
getline istream& getline(signed char *,int,char = '\n' );
istream getline(unsigned char *, int, char = '\n' ). Совпадает с get () с тремя параметрами, но символ-разделитель также помещается в принятую строку символов.
ignore istream& ignore(int n = 1,int delim = EОF). Пропускает до n символов входного потока; останавливается, если встретился разделитель (второй параметр), по умолчанию равный EОF.
peek int peek (). Извлекает следующий символ из входного потока.
putback istream& putback(char). Помещает символ назад во входной поток.
read istream& read(signed char *,int);
istream& read(unsigned char *,int). Извлекает из входного потока заданное вторым параметром число символов и помещает их в массив, на начало которого указывает первый параметр.
seekg istream& seekg(long). Устанавливает указатель чтения входного потока на абсолютную позицию, заданную параметром long.
istream& seekg(long,seek_dir). Перемещает указатель чтения входного потока на число байтов, заданное первым параметром. Второй параметр задает точку отсчета (0 - начало потока; 1 - текущая позиция потока; 2 - конец потока).
telig long telig (). Возвращает текущую позицию указателя чтения входного потока.

Таблица П5.3 Компонентные функции класса ostream

Функция Прототип и краткое описание действий
flush ostream& flush (). Флэширует внутренний буфер выходного потока.
put ostream& put(char). Помещает заданный параметром char символ в выходной поток.
seekp ostream& seekp(long). Устанавливает указатель записи выходного потока на абсолютную позицию, заданную параметром long.
ostream& seekp(long,seek_dir). Перемещает указатель текущей позиции выходного потока на число байтов, заданное первым параметром. Второй параметр задает точку отсчета (0 - начало; 1 - текущая позиция; 2 - конец потока).
tellp long tellp (). Возвращает текущую позицию указателя записи выходного потока.
write ostream& write(const signed char *,int n).
ostream& write(const unsigned char *,int n). Помещает в выходной поток n символов из массива, на который указывает char *. Нуль-символы включаются в число переносимых символов.

Таблица П5.4 Флаги класса ios управляющие форматированием ввода/вывода

Константа Значение Назначение
skipws 0х0001 Игнорировать пробельные символы при вводе.
left 0х0002 "Прижимать" значение к левой стороне поля.
right 0х0004 "Прижимать" значение к правой стороне поля.
intermal 0х0008 Поместить разделительные символы после знака или основания системы счисления (ОСС).
dec 0х0010 Десятичная система счисления (ОСС = 10).
oct 0х0020 Восьмеричная система счисления (ОСС = 8).
hex 0х0040 Шестнадцатеричная система счисления (ОСС = 16)
showbase 0х0080 Указывать ОСС при выводе.
showpoint 0х0100 Печатать десятичную точку и следующие за ней нули при выводе вещественных чисел.
uppercase 0х0200 Шестнадцатеричные цифры печатать на верхнем регистре.
showpos 0х0400 Добавлять '+' при выводе положительных чисел.
scientific 0х0800 Использовать формат 1. 2345Е2 для вывода вещественных чисел (экспоненциальная или научная нотация).
fixed 0х1000 Использовать формат 123.45 для вывода вещественных чисел (с фиксированной точкой).
unitbuf 0х2000 Флэшировать потоки после операции <<.
stdio 0х4000 Флэшировать stdout, stderr после операции <<.

Таблица П5.5 Константы класса ios для "очистки" флагов форматирования

Константа "Сбрасываемые" флаги Действие
basefield ios ::hex, ios::oct,
ios::dec
На основание системы счисления
floatfield ios ::fixed,
ios::scientific
На представление вещественных чисел.
adjustifield ios ::left, ios::right,
ios ::internal
На выравнивание значений в поле вывода.

Таблица П5.6 Функции-манипуляторы

Манипулятор Краткое описание действий
dec Устанавливает десятичное основание системы счисления.
hex Устанавливает шестнадцатеричное основание системы счисления.
oct Устанавливает восьмеричное основание системы счисления.
ws При вводе позволяет извлекать из входного потока обобщенные пробельные символы.
endl При выводе помещает в поток символ новой строки и флэширует буфер потока.
ends При выводе помещает в поток символ конца строки '\0'
flush Флэширует буфер потока ostream.

Таблица П5.7 Параметризованные функции-манипуляторы - файл iomanip. h

Название Краткое описание действий
setbase(int = 0) Устанавливает основание системы счисления (0 - при выводе - десятичное; при вводе - внутреннее представление вводимых цифр соответствует правилам ANSI для языка Си; 8 - восьмеричное; 10 - десятичное; 16 - шестнадцатеричное).
resetiosflags(long) Очищает форматные флаги, используя значение параметра.
setiosflags(long) Устанавливает форматные флаги, используя значение параметра.
setfill(int) Устанавливает символ-заполнитель.
setprecision(int) Устанавливает по значению параметра точность представления вещественных чисел.
setw(int) Устанавливает по значению параметра ширину поля ввода или вывода.

Таблица П5.8 Компонентные функции класса filebuf

Функция Прототип и краткое описание действий
attach filebuf* attach(int fd). Связывает с объектом класса filebuf файл с дескриптором fd. Если файл уже открыт, возвращает NULL.
close filebuf* с1оse (). Флэширует и закрывает файл. Возвращает ссылку на буфер файла, либо 0 при ошибке.
fd int fd(). Возвращает дескриптор открытого файла, связанного с заданным объектом класса filabuf, либо EOF.
is_rtl_open int is_rt1_орen(). Возвращает не равное нулю целое число, если с заданным объектом связан открытый файл.
open filebuf* open(const char*, int mode, int prot = filebuf::openprot). Открывает файл, на спецификацию которого указывает char*, в режиме mode и присоединяет к нему объект класса filebuf. Третий параметр задает защиту файла.

Класс буферизации данных в потоках filebuf для упрощения изложения не показан в иерархии классов (см. рис. 11.3). Он является базовым для всех классов ввода-вывода, с которыми мы познакомились, и должен использоваться при создании на их основе новых собственных классов. Среди компонентных функций класса filebuf не показаны виртуальные функции.

Таблица П5.9 Компонентные функции классов ifstream, ofstream, fstream

Функция Прототип и краткое описание действий
open void open(const char*, int mode, int = filebuf::openprot). Открывает файл с буфером, на который указывает первый параметр. Второй параметр - режим использования файла. Третий параметр - защита файла.
rdbuf filebuf* rdbuf( ). Возвращает указатель на буфер, связанный с потоком.

Таблица П5.10 Режимы файла, устанавливаемые параметром mode в фукции орen ()

Обозначение Значение Краткое описание действия
ios::in 0х01 Открыть только для чтения (режим по умолчанию устанавливается для потоков класса ifstream).
ios::out 0х02 Открыть только для записи (режим по умолчанию устанавливается для потоков класса oifstream).
ios::ate 0х04 Открыть для записи в конец файла. Если файл не существует - создать его.
ios::app 0х08 Открыть в режиме дополнения.
ios::trunc 0х10 Открыть, уничтожив содержимое файла (устанавливается по умолчанию, если установлен режим out, либо один из режимов ate или арр).
ios::mocreate 0х20 Открыть только существующий файл, если файла не существует - установить состояние ошибки.
ios:moreplace 0х40 Создать и открыть только не существующий файл. Если файл существует - установить состояние ошибки.
ios:bimarу 0х80 Открыть для двоичного обмена.

ПРИЛОЖЕНИЕ 6

БИБЛИОТЕЧНЫЕ КЛАССЫ И ИХ КОМПОНЕНТНЫЕ ФУНКЦИИ

Среди дополнительных средств, не входящих в собственно язык Си++, но отмечаемых в проектах стандарта и входящих в конкретные реализации, важное место занимают классы. Наиболее полезные с точки зрения пользователей и разработчиков компиляторов классы входят в библиотеки классов и поставляются вместе с компиляторами. Здесь можно отметить библиотеку классов потокового ввода-вывода, библиотеку контейнерных классов, а также некоторое количество специализированных классов. Библиотека потокового ввода-вывода подробно разобрана в главе 11, а общий список ее компонентных функций дан в Приложении 5.

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

Контейнерные классы заслуживают отдельного тщательного изучения при подготовке профессиональных программистов. Объем настоящего пособия не позволяет рассмотреть их подробно, а бойкое перечисление имен и названий классов ничего читателю не даст. Некоторую информацию о возможностях контейнерных классов можно найти в работе [19]. Однако за подробностями следует обращаться к технической документации по конкретным компиляторам и библиотекам классов.

В стандартные библиотеки компиляторов входят и менее объемные, но не менее полезные для частных применений классы. Остановимся на двух их них.

Класс complex становится доступным в программе после подключения заголовочного файла complex, h. В этом файле содержатся как определения класса complex, так и все операции-функции, необходимые для работы с его объектами, т.е. с комплексными числами, а именно:

В классе complex имеются две формы конструктора объектов:

complex complex ();
complex complex(double real, double imag = 0);

где complex - структура, описанная в файле math.h следующим образом:

struct complex
{ double x, у;
};

x и у - соответственно вещественная и мнимая части комплексного числа.

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

Примеры:

complex z1(); // х==0, у==0
complex z2(5.0); // х==5.0, у==0
complex z3(5.0,-1.0); // х==5.0, у==-1.0

Таблица П6.1 Компонентные и дружественные функции класса complex

Функция Прототип и краткое описание действий
abs double abs(complex x). Возвращает модуль комплексного числа z
acos complex acos(complex z). Возвращает значение арккосинуса комплексного числа z
arg double arg(complex z). Возвращает главное значение аргумента комплексного числа z (~p < arg z < p)
asin complex asin(complex x). Возвращает значение арксинуса комплексного числа z
atan complex atan(complex x). Возвращает значение арктангенса комплексного числа z
conj double conj(complex z). Возвращает комплексносопряженное к комплексному числу z
cos complex cos(complex z). Возвращает значение косинуса комплексного числа z
cosh complex cosh(complex z). Возвращает значение гиперболического косинуса комплексного числа z
exp complex exp(complex z). Возвращает значение функции еx комплексного числа z
imag double imag(complex z). Возвращает мнимую часть комплексного числа z
log complex log(complex z). Возвращает значение натурального логарифма комплексного числа z
log 10 complex log10(complex z). Возвращает значение десятичного логарифма комплексного числа z
norm double norm(complex z). Возвращает квадрат модуля комплексного числа z
pow complex pow(complex x, complex у). Возвращает значение хy комплексных чисел х и у
polar complex polar(double mag, double angle). Возвращает комплексное число, имеющее модуль mag и значение аргумента angle
real double real(complex z). Возвращает вещественную часть комплексного числа z
sin complex sin(complex z). Возвращает значение синуса комплексного числа z
sinh complex sinh(complex z). Возвращает значение гиперболического синуса комплексного числа z
tan complex tan(complex z). Возвращает значение тангенса комплексного числа z
tanh complex tanh(complex z). Возвращает значение гиперболического тангенса комплексного числа z

Другой полезный класс - string - описывается в заголовочном файле cstring.h. В компиляторе ВС++ 4.5 этот класс содержит 11 форм конструкторов объектов (см. [30]):

string();

Конструктор по умолчанию. Создает строку нулевой длины.

string(const string& s);

Создает строку, совпадающую с полученной по ссылке s.

string(const string& s, size_t start, size_t n = NPOS);

Создает строку, содержащую n байт, начиная с позиции start исходной строки s. Тип size_t определен в заголовочном файле так: typedef unsigned size_t; значение NРОS определено как unsigned (-1), т.е. 32767.

string(const char *cp);

Копирует строку, адресуемую указателем ср (до первого нулевого символа).

string(const char *cp, size_t start, size_t n = NPOS);

Создает строку, содержащую n байт, начиная с позиции start исходной строки ср.

string([un]signed char с);

Создает строку, состоящую из одного символа с.

string([un]signed char с, size_t n = NPOS);

Создает строку, состоящую из n символов с.

string(const TSubString_ FAR &ss);

Создает строку из подстроки ss.

string(HINSTANCE instance, UINT id, int len = 255);

Создает строку в программах для Windows из ресурса.

Класс string замечателен тем, что в нем реализована технология, называемая "копировать при записи" ("copy-on-write"). Это означает, что при создании новых объектов класса string копируется не сама порождающая строка, а лишь указатель на нее. При дальнейших чтениях информации из этого объекта на самом деле выполняются операции не с новой, а с порождающей строкой.

Реальное же выделение памяти для объекта и копирование содержимого исходной строки происходит только в том случае, если в строку нового объекта вносятся изменения.

Таблица П6.2 Компонентные и дружествеииые функции класса string

Функция Прототип и краткое описание действий
ansi_to_оеm void ansi_to_oem(). Конвертирует строку из кодировки ANSI (Windows) в кодировку OEM (MS-DOS) (доступна только при компиляции программ для Windows, в т.ч. в режиме EasyWin)
append string& append(const stringf s).
string& append(const stringt s, size_ t start,
size t n = NPOS); stringt append(const char *cp, size_ t start,
sizet n = NPOS); Добавляет к исходной строке соответственно строку s или не более n символов (начиная с символа start) строки s (ср). Все три формы возвращают ссылку на результат
assign string& assign(const string& s);
string& assign(const stringt s, size_t start, sizet n = NРОS). Меняет содержимое исходной строки на соответственно строку s или n символов (начиная с символа start) из строки s
compare int compare{const string& s)
int compare(const string& s, size_ t orig, size_ t n = NPOS). Сравнивает исходную строку соответственно со строкой s или n символами строки s. Возвращает целое число, меньшее, большее или равное нулю в зависимости от результата сравнения строк
contains int contains(const char *pat) const;
int contains(const string& s) const. Возвращает 1, если подстрока pat (s) найдена в исходной строке; в противном случае возвращает 0
copy size_t copy(char *cb, size_t n = NPOS);
size_t copy(char *cb, size_t n, sixe_t pos).
Копирует не более n символов (начиная с pos) исходной строки в строку сb. Возвращает число скопированных символов
string copy() const throw(xalloc). Возвращает копию исходной строки
c_str const char *c_str () const. Возвращает указатель (адрес) на исходную строку (или ее копию)
find size_ t find(const string& s);
size_ t find(const string& s, size_t pos). Возвращает позицию первого вхождения подстроки s в ис ходную строку (начиная с позиции pos исходной строки)
size_t find(const TRegexp& pat, size_t i = 0);
size_ t find(const TRegexp& pat, size_t *ext, size_t i = 0) const.
Возвращает позицию первого вхождения регулярного выражения pat в исходную строку. Если подстрока не найдена - возвращается NPOS
find_ first_of size_ t find_ first_of(const string& s) const;
size_t find_first_of(const string& s, size_t pos) const. Возвращает первую позицию исходной строки (начиная с пози ции pos), в которой встретился некоторый символ строки s. В случае неуспеха возвращается NPOS
find_first_not_of size_t find_first_not_of(const stringt s) const;
size_ t find_first_not_ of(const string& s, size_t pos) const. Возвращает первую позицию исходной строки (начиная с пози ции pos), содержащую символ, отсутствующий в строке s. В случае неуспеха возвращается NPOS
rind_ last_of size_t find_last_of(const string& s) const;
size_ t find_ last_ of(const string& s, size_t pos) const. Аналогична find_first_of, но возвращается последняя позиция
find_last_not_of size_t find_last_not_of(const string& s) const;
size_t find_last_not_of(const string&s, size_t pos) const. Аналогична find_first_not_of, но возвращается последняя позиция
get_at char get_at(size_ t pos) const
throw(outofrange). Возвращает символ исходной строки в позиции pos. Если pos > length () -1, порождается исключение outofrange
get_case_sensitive_fiag static int get_case_sensitive_flag(). Возвращает 1, если при сравнении строк различаются прописные и строчные буквы, 0 - если нет
get initial capacity static unsigned get_ initial_ capacity(). Возвращает количество бант памяти, отведенных под исходную строку (< length () -1)
get_max_waste static unsigned get_max_waste(). Возвращает максимальное число байт, которое может быть выделено для строки
get_paranoid_check static int get_paranoid_check (). Возвращает 1, если возможна проверка коллизий хеширования; иначе возвращает 0.
get_resize_increment static unsigned get_ resize_increment(). Возвращает приращение, изменяющее размер строки.
get_skipwhitespace_flag static int get_skipwhitespace_flag(). Возвращает 1, если игнорируются обощенные пробельные символы; иначе возвращает 0.
hash unsigned hash() const. Возвращает значение хеширования
initial_capacity static size_ t initial_ capacity(size_ t ic = 63). Устанавливает минимальное количество байт, выделяемых для строки по умолчанию
insert string& insert(size_t pos, const string& s);
string& insert(size_t pos, const string& s, size_t start, size_t n = NPOS). С позиции pos в исходную строку вставляется содержимое строки s (не более n символов строки s, начиная с позиции start). Возвращает ссылку на результат
is_null int is_ null() const. Возвращается 1, если исходная строка пуста, и 0 - в противном случае
length unsigned length() const. Возвращает число символов в исходной строке
MaxWaste static size_t MaxWaste (size_t mw = 63). Установить максимальное число байт, выделяемых для строки.
oem_to_ansi void oem_to_ansi(). Конвертирует строку из кодировки OEM (MS-DOS) в кодировку ANSI (Windows) (доступна только при компиляции программ для Windows, в т.ч. в режиме EasyWin)
prepend string& prepend(const string& s );
string& prepend(const string& s, size_t start, size_t n = NPOS).
string& prepend(const char *cp );
string& prepend(const char *cp, size_t start, size_t n = NPOS). Вставляет в начало исходной строки строку s (ср) (n символов строки s (ср), начиная с позиции start)
put_at void put_at(size_t pos, char с)
throw(outofrange). Заменяет символ в позиции pos исходной строки символом с. Если pos > length ()-1, порождается исключение outofrange
read_file istream& read_ file(istream& is). Считать строку из входного потока is (до символа EOF или NULL)
read_line istream& read_ line(istream& is). Считать строку из входного потока is (до символа перевода строки или EOF)
read_string istream& read_ string (istream& is). Считать строку из входного потока is (до символа EOF или NULL)
read_to_delim istream& read_ to_ delim(istream& is, char delim = '\n'). Считывать строку из входного потока is до тех пор, пока не будет встречен символ delim или EOF (символ-разделитель dalim из потока удаляется)
read_token istream& read_ token(istream& is). Считать строку из входного потока is до обобщенного пробела (ведущие пробелы не учитываются)
rfind size_ t rfind(const string& s );
size_t rfind(const string& s, size_ t роs). Аналог функции find, но возвращает позицию последнего вхождения подстроки s
remove string& remove(size_t pos);
string& remove(sirе_t pos, size_t n = NPOS). Удаляет все символы (не более n символов), начиная с позиции pos исходной строки и до ее конца. Возвращает ссылку на строку-результат
replace string& replace(size_t pos, size_ t n = NPOS, const strings s);
string& replace(size_t pos, size_ t n1, const string& s, size_t start, size_ t n2). Удаляет из исходной строки не более n (nl) символов и помещает на их место строку s (не более n2 символов из строки s, начиная с позиции start)
reserve size_t reserve() const. Возвращает размер отведенной памяти для размещения строки
void reserve(size_ t ic). Сообщает системе, что строка может занимать более ic байт памяти
resize void resize(size_t m). Изменяет размер строки на m символов, отбрасывая лишние либо заполняя пробелами добавленные
resize_incr ement static size_ t resize_ increment(size_t ri = 64). Изменяет приращение, используемое для автоматического изменения размера строки
set_case_s ensitive static int set_case_sensitive(int tf = 1). Установка различия прописных и строчных букв: 1 - различать, 0 - не различать. Возвращает предыдущую установку
set_parano id_check static int set_paranoid_check (int ck = 1). Для поиска строк используется механизм хеширования, так как возможно, что одно и то же хешированиое значение получается при обработке различных строк. Вызов функции с параметром ck = 1 устанавливает заключительную проверку строк с помощью функции strcmp (). Если ck = 0, такая проверка не выполняется
skip_white space static int skip_whitespace(int sk = 1). Устанавливается в 1, чтобы игнорировать пробелы после считывания каждой лексемы, иначе устанавливается в 0
strip TSubString strip(StripType s = Trailing, char с = ' ' ). В зависимости от параметра s удаляет символы с в начале, в конце либо с обеих сторон исходной строки
substr string substr(size_t pos) const;
string substr(size_t pos, size_t n = NPOS) const. Создает строку, содержащую копию (не более n символов), начиная с позиции pos, и до конца строки
substring TSubString substring(const char *cp);
const TSubString substring(const char *cp) const;
TSubString substring(const char *cp, size_t start);
TSubString substring(const char *cp, size_t start). Создает объект класса TSubString, включающий копию символов, адресуемых указателем ср (начиная с символа start)
to_lower void to_lower (). Переводит все символы исходной строки на нижний регистр
to_upper void to_upper(). Переводит все символы исходной строки на верхний регистр

Литература

  1. Страуструп Б. Язык программирования Си++: Пер. с англ.- М.: Радио и связь, 1991-352 с.
  2. Эллис М., Строуструп Б. Справочное руководство по языку программирования C++ с комментариями. Проект стандарта ANSI: Пер. с англ.-М.: Мир, 1992-445 с.
  3. . Керциган Б., Ритчи Д. Язык программирования Си: Пер. с англ.- М.: Финансы и статистика, 1992.- 272 с.
  4. Turbo C++. Руководство пользователя: Пер. с англ.- М.: СП ИНТЕРКВАДРО, 1991- 298 с.
  5. Turbo C++. Руководство программиста: Пер. с англ.- М.: СП ИНТЕРКВАДРО, 1991.- 394 с.
  6. Turbo C++. Справочник по библиотеке: Пер. с англ.- М.: СП ИНТЕРКВАДРО, 1991.- 568 с.
  7. Дункан Р. Си++ для тех, кто знает Си // PC Magazine/USSR. 1991- №3-С. 84-106.
  8. Намиот Д.Е. Язык программирования TURBO C++: Учебное пособие /Под ред. В-А.Сухомлина-М.: МГУ, 1991- 121 с.
  9. Borland C++ 3.0. Programmer's Guide- Scotts Valley, USA: Borland International, Inc. 1991.- 467 р.
  10. Borland C++ 3.0. Users Guide.- Scotts Valley, USA: Borland International, Inc. 1991.-229 p.
  11. Borland C++ 3.0. Library Reference- Scotts Valley, USA: Borland International, Inc. 1991.- 655 p.
  12. . Неформальное введение в C++ и Turbo Vision: Пер. с англ.- Санкт-Петербург: Галерея "ПЕТРОПОЛЬ", 1992,384 с.
  13. Собоцинский В.В. Практический курс Turbo C++. Основы объектно-ориентированного программирования.- М.: Свет, 1993.- 236 с.
  14. Романов В.Ю. Программирование на языке C++. Практический подход.- М.: Компьютер, 1993.- 160 с.
  15. Буч Г. Объектно-ориентированное проектирование с примерами применения: Пер. с англ.- М : Конкорд, 1992.- 519 с.
  16. Уинер Р. Язык Турбо Си: Пер. с англ.- М.: Мир, 1991.- 384 с.
  17. . Касаткин А.И., Вальвачев А.Н. Профессиональное программирование на языке Си. От Turbo С к Borland C++. Справочное пособие. Под общ. ред. Касаткина А.И.- Минск: Вышэйшая школа, 1992 - 240 с.
  18. . Рассохин Д.Н. От Си к Си++- М.: ЭДЭЛЬ, 1993- 128 с.
  19. . Цимбал А.А., Майоров А.Г., Козодоев М.А. Turbo C++: Язык и его применение.- М.: Джен Ай Лтд, 1993.- 512с.
  20. . Романовская Л.М., Русс Т.В., Свитковский С.Г. Программирование в среде Си для ПЭВМ ЕС.- М.: Финансы и статистика, 1991.- 352 с.
  21. Borland C++. Version 4.0. Programmer's Guide.- Scotts Valley, USA: Borland International, Inc. 1993- 326 с.
  22. Вайнер Р., Пинсон Л. C++ изнутри: Пер. с англ.- Киев: ДиаСофт, 1993.-304с.
  23. Дьюхарст С., Старк К. Программирование на Си++: Пер с англ.- Киев: ДиаСофт,1993.-272с.
  24. Лукас П. C++ под рукой: Пер. с англ.- Киев: ДиаСофт, 1993.- 176 с.
  25. Липпман С.Б. C++ для начинающих: Пер. с англ.- М.: Унитех; Рязань: Гэлион, 1993- Т. 1- 304 с.; Т. 2- 345 с.
  26. Страуструп Б. Язык программирования Си++. Второе издание : Пер. с англ.- Киев: ДиаСофт, 1993. Часть 1- 264 с. Часть 2- 296 с.
  27. От Си к Си++ / Е.И.Козелл, Л.М.Романовская, Т.В.Русс и др.- М.: Финансы и статистика, 1993.- 272 с.
  28. Кристиан К. Библиотека потокового ввода-вывода языка Си++ // PC Magazine/Russian Edition, 1994-№3.-С. 115-123.
  29. Borland C++. Version 4.5. Programmer's Guide.- Scotts Valley, USA: Borland International, Inc., 1994- 256 p.
  30. Borland C++. Version 4.5. Class Libraries Guide- Scotts Valley, USA: Borland International, Inc., 1994.- 294 p.
  31. Bortland C++. Version 4.5. Library Reference.- Scotts Valley, USA: Borland International, Inc., 1994.- 364 p.
  32. Пол Ирэ. Объектно-ориентированное программирование с использованием Си++: Пер с англ.- Киев: НИПФ ДиаСофт Лтд, 1995- 480 с.
  33. Белкин В. Обработка исключительных ситуаций в Си++: что, когда, как. PC Magazine/Russion Edition, 1995- №4- С. 180-186.
  34. Зуев Е., Кротов А. Новые возможности Си++ // PC Magazine/Russian Edition, 1994-№7.-С. 176-181.
  35. Бабэ Бруно. Просто и ясно о Borland C++. Пер. с англ.- М: БИНОМ, 1995-400 с.

УКАЗАТЕЛЬ СИМВОЛОВ

, операция "запятая" 40,46, 50
! операция логического отрицания 32,46
!= операция неравенства 35, 46
# операция препроцессирования17,53
операция замещения параметра макроса 276
## операция конкатенации лексем в макросе 277
% операция взятия остатка 34,46
%= операция получения остатка, совмещенная с присваиванием 37
& операция взятия адреса 32,46
операция И (поразрядная) 34, 46
описание ссылки 215
&& операция И (логическая) 36,46
&= побитовая операция И, совмещенная с присваиванием 37
() операция "вызов функции" 41
описание функции 47
преобразование типов 48
* операция разыменования 32, 46
операция умножения 34,46
определение указателя 44
*= операция умножения, совмещенная с присваиванием 37
+ операция сложения 32, 34
-операция "унарный плюс" 32
++ операция увеличения (инкремент) 32, 46
+= операция сложения, совмещенная с присваиванием 37
операция вычитания 32, 34
операция "унарный минус" 32
- операция уменьшения (декремент) 33, 46
-= операция вычитания, совмещенная с присваиванием 37
-> операция доступа к компонентам структурированного объекта 39, 241, 284,296
->* операция разыменования указателей на компоненты классов 302
операция доступа к компоненту класса по имени объекта 39
.* операция разыменования указателей на компоненты классов 302
... многоточие 52
/ операция деления 34,46
/* комментарий (начало) 8, 174, 266
-/ комментарий (конец) 8, 174, 266
// комментарий (однострочный) 8, 174
/= операция деления, совмещенная с присваиванием 37
: признак поля 258
спецификатор метки 52
:: операция указания области видимости 39,46
операция уточнения области действия 283
:: * описание указателя на компонент класса 300
< операция "меньше, чем" 35,46
<< операция "сдвиг влево" 34,46
<<= операция "сдвиг влево", совмещенная с присваиванием 37
<= операция "меньше или равно" 35,46
= операция присваивания 37, 38,46
= 0 "чистый спецификатор" 365
== операция сравнения на равенство 35,46
> операция "больше, чем" 3,46
>= операция "больше или равно" 35,46
>> операция "сдвиг вправо" 34, 46
>>= операция "сдвиг вправо", совмещенная с присваиванием 37
?: операция условного выражения (условная операция) 42, 46
[] операция индексации 41,46
описание массива 46,47
\ обратный слэш 26
^ операция "симметрическая разность" (исключающее ИЛИ) 35,46
*= операция "симметрическая разность", совмещенная с присваиванием 38
подчеркивание (литера) 19
~ подчеркивание в идентификаторе 19,20
() блок (составной оператор) 48
определение класса 281
определение перечисления 24
список инициализаторов 10, 12
| побитовая включающая операция ИЛИ 34,46
| = побитовая включающая операция ИЛИ, совмещенная с присваиванием 38 11
логическая операция ИЛИ 36.46
деструктор 346
операция дополнения до единицы 32,46
0 нуль 32
нулевой указатель 44
\0 нулевая литера 396

[Оглавление]
[Вверх]
 

Hosted by uCoz