Подбельский учебник с++ / Подбельский - главы 10-12
.pdf516 |
Язык Си++ |
|
Таблица П4.4 (продолжение) |
Функция |
Прототип и краткое описание действий |
getfUlpattern |
void far getfillpattern(char far *pattern); |
|
Получение кодов, применяемых пользователем для зада- |
|
ния шаблона заполнения экрана или его области |
getfillsettings |
void far getfillsettings(struct |
|
fillsettingstype far *fillinfo); |
|
Возвращает в структуре fi l l i n f o значения параметров |
|
заполнения и цвета экрана |
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); |
|
Возвращает в структуре lineinfо значения параметров |
|
линии |
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); |
|
Возвращает диапазон доступных графических режимов |
|
для графического драйвера graphdriver |
getmaxx |
int far getmaxx(void); |
|
Возвращает целое значение, равное размеру экрана по |
|
горизонтали (максимальное значение х) |
Приложение 4. Графическая библиотека ВС++ |
517 |
|
|
|
|
|
Таблица П4.4 (продолжение) |
|
Функция |
Прототип и краткое описание действий |
|
getraaxy |
i n t far getmaxy(void); |
|
|
Возвращает целое значение, равное размеру экрана по |
|
|
вертикали (максимальное значение у) |
|
getpalette |
void far getpalette(struct palettetype far |
|
|
•palette); |
|
|
Выдает указатель palette на структуру типа palette, |
|
|
содержащую информацию о текущей палитре (наборе цве |
|
|
тов) |
|
getpalettesize |
int far getpalettesize(void); |
|
|
Возвращает количество цветов, доступных в текущем гра- |
|
|
фическом режиме |
|
getpixel |
unsigned far getpixel(int x, int y); |
|
|
Возвращает цвет заданной (х, у) точки |
|
gettextsettings |
void far gettextsettings(struct |
|
|
textsettingstype far *texttypeinfo); |
|
|
Возвращает в структуре texttypeinfо значения пара- |
|
|
метров текста |
|
getviewsettings |
void far getviewsettings (struct |
|
|
viewporttype far «viewport); |
|
|
Возвращает в структуре viewport значения параметров |
|
|
окнаэкрана |
|
getx |
int far getx(void); |
|
|
Возвращает целое значение координаты х текущей пози- |
|
|
ции на экране |
|
;ety |
int far gety(void); |
|
|
Возвращает целое значение координаты у текущей пози- |
|
|
ции на экране |
|
graphresult |
int far graphresult(void); |
|
|
Возвращает номер ошибки графической операции (целое |
|
|
число от -15 до -1); значение 0 говорит об отсутствии |
|
|
ошибок |
|
grapherrormsg |
char *far grapherrormsg(int errorcode); |
|
|
Возвращает указатель на строку, содержащую описание |
|
|
шибки номер errorcode |
|
518
Функция
imagesize
textheight
Язык Си++
ТаблицаU4А(продолжение)
Прототип и краткое описание действий
unsigned far imagesize(int left, int top,
int right, int bottom);
Возвращает объем буфера, нужного для сохранения графической информации в окне экрана с заданными вершинами
int far textheight(char far *textstring); Возвращает целое значение высоты в пикселах символов из строки texts tring
textwidth |
int far textwidth(char far *textstring); |
|
Возвращает в пикселах целое значение ширины строки |
||
|
||
|
символов texts tr ing |
ПРИЛОЖЕНИЕ 5
КЛАССЫИКОМПОНЕНТНЫЕФУНКЦИИ БИБЛИОТЕКИ ПОТОКОВОГО ВВОДА-ВЫВОДА В СИ++
О библиотеке классов потокового ввода-вывода подробно говорилось в главе 11. В данном приложении приведены только краткие сведения о компонентных функциях и других средствах, использование которых позволяет реализовать обмен с потоками. Многие из перечисленных ниже функций уже рассмотрены в главе 11. Там же приведены сведения об иерархии классов в библиотеке. Подробное изучение остальных средств потокового ввода-вывода потребует обращения к документации по конкретному компилятору.
|
|
Таблица175.1 |
|
|
Компонентные функции класса ios |
Функция |
|
Прототип и краткое описание действий |
bad |
in t bad() ; |
|
|
При ошибке возвращает ненулевое значение. |
|
bitalloc |
s t a t i c long b i t a l l o c () ; |
|
|
Возвращает установку флагов. Полученное значение может быть |
|
|
использовано для очистки, установки или проверки флагов. |
|
clear |
void clea r (in t =» 0) ; |
|
|
Устанавливает состояние потока в нуль. |
|
eof |
in t eof( ) ; |
|
|
Возвращает ненулевое значение, если имеет место условие конца |
|
|
файла (EOF). |
|
fail |
int fail () ; |
|
|
Возвращает ненулевое значение, если операция обмена с потоком |
|
|
терпит неудачу. |
|
fill |
char |
f i l l ( ) ; |
|
Возвращает текущее значение символа заполнения потока, |
|
|
char |
f i l l ( c h a r ) ; |
|
Заменяет значением параметра символ заполнения потока; воз- |
|
|
вращает ранее установленное значение символа заполнения. |
520 |
|
Язык Си++ |
|
|
Таблица П5.1 (продолжение) |
Функция |
|
Прототипикраткоеописаниедействий |
flags |
long |
flags(); |
|
Возвращает текущее значение флагов форматирования. |
|
|
long flags(long); |
|
|
Устанавливает флаги форматирования по значению параметра; |
|
|
возвращает ранее установленное значение флагов. |
|
good |
i n t good () ; |
|
|
Возвращает ненулевое значение, если не установлен ни один флаг |
|
|
состояния (ошибок нет). |
|
precision |
int |
precision(); |
|
Возвращает текущее значение точности вещественных чисел, |
|
|
int precision(int); |
|
|
Устанавливает точность вещественных чисел по значению пара- |
|
|
метра; возвращает предыдущее значение. |
|
rdbuf |
streambuf* rdbuf О; |
|
|
Возвращает указатель на буфер (объект класса bufstream), свя- |
|
|
занный с потоком. |
|
restate |
int |
rdstate(); |
|
Возвращает текущее состояние потока. |
|
setf |
long |
setf (long); |
|
Устанавливает флаги по значению параметра; возвращает |
|
|
предыдущие значения флагов |
|
|
long self(long _setbits, long _field) ; |
|
|
Сбрасывает те биты состояния, которые отмечены в _field, |
|
|
затем устанавливает биты по значению _setbits. |
|
tie |
ostream+ tie() ; |
|
|
Возвращает указатель на взаимосвязанный (tied) поток, |
|
|
ostream* tie(ostream*); |
|
|
Организует поток, взаимосвязанный с потоком, на который ука- |
|
|
зывает ostream*; возвращает указатель на предыдущий взаимо- |
|
|
связанный поток, если такой есть. |
|
unself |
long unself(long); |
|
|
Очищает биты состояния потока, отмеченные переданным пара- |
метром; возвращает предыдущее значение битов.
Приложение 5. Классы и функции библиотеки ввода-вывода в Си++ 521
|
|
|
|
|
Таблица 175.1 (продолжение) |
||||
Функция |
|
|
Прототипикраткоеописаниедействий |
|
|||||
width |
int width () ; |
|
|
|
|
|
|
||
|
Возвращает текущее значение ширины, |
|
|
|
|||||
|
int |
width(int); |
|
|
|
|
|
|
|
|
Устанавливает ширину, равной значению переданного парамет- |
||||||||
|
ра; возвращает предыдущее значение. |
|
|
|
|
||||
|
|
Компонентные функции класса istream |
|
Таблица П5.2 |
|||||
|
|
|
|
|
|||||
Функция |
|
|
Прототипикраткоеописаниедействий |
|
|||||
gcount |
int |
gcount(); |
|
|
|
|
|
|
|
|
Возвращает число символов, извлеченных из потока последним |
||||||||
|
обращением из прикладной программы. |
|
|
|
|||||
get |
in t get () ; |
|
|
|
|
|
|
||
|
Передает из входного потока в прикладную программу следую- |
||||||||
|
щий символ или EOF. |
|
|
|
|
|
|
||
|
i n t |
g e t ( s i g n e d char * , i n t |
len,char = |
' \ n ' ) ; |
|||||
|
i n t |
get(unsigned char * , i n t len,char |
= |
' \ n ' ) ; |
|||||
|
Извлекает из входного потока символы и помещает их в буфер, |
||||||||
|
на начало которого указывает char *. Передача символов за- |
||||||||
|
вершается, если прочитано (len - 1) байтов, или встретился сим- |
||||||||
|
вол-разделитель (третий параметр в функции), или достигнут |
||||||||
|
конец файла EOF. Завершающий нуль-символ всегда помещается |
||||||||
|
в буфер, обозначая конец принятой строки, разделитель |
|
|||||||
|
(последний параметр) не переносится в строку, |
|
|
|
|||||
|
int get(unsigned chart); |
|
|
|
|
|
|
||
|
int get(signed chart); |
|
|
|
|
|
|
||
|
Извлекает из входного потока символ и помещает его в байт, на |
||||||||
|
который указывает параметр chart, |
|
|
|
|
||||
|
i n t |
get(streambuffi,char |
= |
' \ n ' ) ; |
|
|
|
||
|
Извлекает символы из входного потока и помещает их в буфер |
||||||||
|
потока, на который ссылается streambuf. Чтение символов |
||||||||
|
прекращается, если в потоке встретился символ-разделитель |
||||||||
|
(второй параметр). |
|
|
|
|
|
|
||
getline |
istream4 |
g e t l i n e ( s i g n e d |
char |
*,int,char |
= |
' \ n ' ) ; |
|||
|
istream |
g e t l i n e ( u n s i g n e d |
char |
*,int,char |
= |
' \ n ' ) ; |
|||
|
Совпадает с get () с тремя параметрами, но символ-разделитель |
||||||||
|
также помещается в принятую строку символов. |
|
|
|
522 |
|
ЯзыкСи++ |
|||
|
|
Таблица П5.2 (продолжение) |
|||
Функция |
|
Прототипикраткоеописаниедействий |
|||
ignore |
istreams ignore(int n « l,int delim « EOF); |
||||
|
Пропускает до п символов входного потока; останавливается, |
||||
|
если встретился разделитель (второй параметр), по умолчанию |
||||
|
равныйEOF. |
||||
peek |
int peek О; |
||||
|
Извлекает следующий символ из входного потока. |
||||
putback |
istreams |
putback(char); |
|||
|
Помещает символ назад во входной поток. |
||||
read |
istreamS |
read(signed char *,int); |
|||
istream£ |
read(unsigned char * , i n t ) ; |
||||
|
|||||
|
Извлекает из входного потока заданное вторым параметром чис- |
||||
|
ло символов и помещает их в массив, на начало которого указы- |
||||
|
вает первый параметр. |
||||
seekg |
istreamfi |
seekg(long); |
|||
|
Устанавливает указатель чтения входного потока на абсолютную |
||||
|
позицию, заданную параметром long, |
||||
|
istreamfi |
seekg (long, seek__dir) ; |
|||
|
Перемещает указатель чтения входного потока на число байтов, |
||||
|
заданное первым параметром. Второй параметр задает точку |
||||
|
отсчета (0 - начало потока; 1 - текущая позиция потока; 2 - ко- |
||||
|
нец потока). |
||||
telig |
long t e l i g ( ) ; |
||||
|
Возвращает текущую позицию указателя чтения входного пото- |
||||
|
ка. |
|
|
|
|
|
|
|
Таблица П5.3 |
||
|
Компонентные функции класса ostream |
||||
Функция |
|
Прототипикраткоеописаниедействий |
|||
flush |
оstreams |
flush(); |
|||
|
Флэширует внутренний буфер выходного потока. |
||||
put |
оstreams put(char); |
||||
|
Помещает заданный параметром char символ в выходной поток. |
||||
seekp |
оstreams |
seekp(long); |
|||
|
Устанавливает указатель записи выходного потока на абсолют- |
||||
|
ную позицию, заданную параметром long. |
||||
|
|
|
|
|
Приложение 5. Классы и функции библиотеки ввода-вывода в Си++ 523
|
Таблица П5.3 (продолжение) |
Функция |
Прототипикраткоеописаниедействий |
|
ostreamS seekp(long,seek_dir); |
|
Перемещает указатель текущей позиции выходного потока на |
|
число байтов, заданное первым параметром. Второй параметр |
|
задает точку отсчета (0 - начало; 1 - текущая позиция; 2 - конец |
|
потока). |
tellp |
long tellp() ; |
|
Возвращает текущую позицию указателя записи выходного по- |
|
тока. |
write |
ostreamS write(const signed char *,int n); |
|
ostreamS write(const unsigned char *,int n); |
|
Помещает в выходной поток п символов из массива, на который |
|
указывает char *. Нуль-символы включаются в число перено- |
|
симых символов. |
|
|
ТаблицаП5.4 |
Флаги класса ios, управляющие форматированием ввода/вывода |
||
Константа Знамение |
Назначение |
|
skipws |
0x0001 |
Игнорировать пробельные символы при вводе. |
left |
0x0002 |
"Прижимать" значение к левой стороне поля. |
right |
0x0004 |
"Прижимать" значение к правой стороне поля. |
internal |
0x0008 |
Поместить разделительные символы после знака |
|
|
или основания системы счисления (ОСС). |
dec |
0x0010 |
Десятичнаясистемасчисления(ОСС = 10). |
oct |
0x0020 |
Восьмеричная система счисления (ОСС = 8). |
hex |
0x0040 |
Шестнадцатеричнаясистемасчисления(ОСС = 16) |
showbase |
0x0080 |
Указывать ОСС при выводе. |
showpoint |
0x0100 |
Печатать десятичную точку и следующие за ней |
|
|
нули при выводе вещественных чисел. |
uppercase |
0x0200 |
Шестнадцатеричные цифры печатать на верхнем |
|
|
регистре. |
524 |
|
Язык Си++ |
|
|
Таблица 775.4 (продолжение) |
Константа |
Значение |
Назначение |
showpos |
0x0400 |
Добавлять • +' при выводе положительных чисел. |
scientific |
0x0800 |
Использовать формат 1.2345Е2 для вывода веще- |
|
|
ственных чисел (экспоненциальная или научная |
|
|
нотация). |
fixed |
0x1000 |
Использовать формат 123.45 для вывода веще- |
|
|
ственных чисел (с фиксированной точкой). |
unitbuf |
0x2000 |
Флэшировать потоки после операции «. |
stdio |
0x4000 |
Флэшировать s t d o u t , s t d e r r после операции «. |
Таблица 175.5
Константы класса ios для "очистки" флагов форматирования
Константа |
|
'Сбрасываемые" флаги |
Действие |
basefield |
i o s |
:hex, ios: :oct, |
На основание системы счис- |
|
i o s |
:dec |
ления |
floatfield |
i o s |
: fixed, |
На представление веществен- |
|
i o s : scientific |
ных чисел. |
|
adjustifield |
i o s |
: left, ios : : right, |
На выравнивание значений в |
|
i o s |
:internal |
поле вывода. |
|
Таблица775.6 |
|
|
Функции-манипуляторы |
|
Манипу- |
Краткое описание действий |
|
лятор |
||
|
||
dec |
Устанавливает десятичное основание системы счисления. |
|
hex |
Устанавливает шестнадцатеричное основание системы счисле- |
|
|
ния. |
|
oct |
Устанавливает восьмеричное основание системы счисления. |
|
ws |
При вводе позволяет извлекать из входного потока обобщенные |
|
|
пробельные символы. |
Приложение 5. Классы и функции библиотеки ввода-вывода в Си++ 525
|
|
Таблица 775.6 (продолжение) |
|
Манипу- |
Краткое описание действий |
||
лятор |
|||
|
|||
endl |
При выводе помещает в поток символ новой строки и флэширует |
||
|
буфер потока. |
|
|
ends |
При выводе помещает в поток символ конца строки '\0' |
||
flush |
Флэширует буфер потока ostream. |
||
|
|
Таблица 775.7 |
|
|
Параметризованные функции-манипуляторы - файл iomanip. h |
||
|
Название |
Краткое описание действий |
setbase(int = 0) Устанавливает основание системы счисления (0 - при выводе - десятичное; при вводе - внутреннее представление вводимых цифр соответствует правилам ANSI для языка Си; 8 - восьмеричное; 10 - десятичное; 16 - шестнадцатеричное).
resetiosflags(Iong) |
Очищает форматные флаги, используя значение пара- |
|
метра. |
setiosflags(Iong) |
Устанавливает форматные флаги, используя значение |
|
параметра. |
setfUl(int) |
Устанавливает символ-заполнитель. |
setprecision(int) |
Устанавливает по значению параметра точность пред- |
|
ставления вещественных чисел. |
setw(int) |
Устанавливает по значению параметра ширину поля |
|
ввода или вывода. |
|
Таблица 775.8 |
|
Компонентные функции класса f i l e b u f |
Функция |
Прототип и краткое описание действий |
attach |
filebuf* attach(int fd); |
|
Связывает с объектом класса filebuf файл с дескриптором |
|
f d. Если файл уже открыт, возвращает NULL. |
526
Функция close
fd
Язык Си++
ТаблицаП5Я(продолжение)
Прототипикраткоеописаниедействий
fiiebuf* close();
Флэширует и закрывает файл. Возвращает ссылку на буфер файла, либо 0 при ошибке.
int fd() ;
Возвращает дескриптор открытого файла, связанного с заданным объектом класса fiiebuf, либо EOF.
is_rtl_open i n t is_rtl_open() ;
|
Возвращает не равное нулю целое число, если с заданным объ- |
|
|
ектом связан открытый файл. |
|
open |
fiiebuf* open(const char*, i n t mode, in t prot = |
|
fiiebuf::openprot); |
||
|
||
|
Открывает файл, на спецификацию которого указывает char*, |
|
|
в режиме mode и присоединяет к нему объект класса fiiebuf. |
|
|
Третий параметр задает защиту файла. |
Класс буферизации данных в потоках fiiebuf для упрощения изложения не показан в иерархии классов (см. рис. 11.3). Он является базовым для всех классов ввода-вывода, с которыми мы познакомились, и должен использоваться при создании на их основе новых собственных классов. Среди компонентных функций класса filebuf не показаны виртуальные функции.
Таблица П5.9
Компонентные функции классов if stream, of stream, f stream
Функция Прототипикраткоеописаниедействий
open |
void open(const char*, in t mode, in t = |
|
filebuf::openprot); |
|
Открывает файл с буфером, на который указывает первый пара- |
|
метр. Второй параметр - режим использования файла. Третий |
|
параметр - защита файла. |
rdbuf |
filebuf* rdbuf(); |
|
Возвращает указатель на буфер, связанный с потоком. |
Приложение 5. Классы и функции библиотеки ввода-вывода в Си++ 527
_ |
. |
|
Таблица П5.10 |
Режимыфайла,устанавливаемыепараметромmodeвфункции open() |
|||
Обозначение Значение |
Краткоеописаниедействия |
||
ios::in |
|
0x01 |
Открыть только для чтения(режим по умолча- |
|
|
|
ниюустанавливаетсядляпотоковкласса |
|
|
|
ifstream). |
ios::out |
|
0x02 |
Открыть толькодля записи (режим по умолчанию |
|
|
|
|
|
|
|
устанавливается для потоков класса oifstream). |
ios::ate |
|
0x04 |
Открытьдлязаписив конецфайла. Еслифайлне |
|
|
|
существует - создать его. |
ios::app |
|
0x08 |
Открытьврежимедополнения. |
ios::trunc |
|
0x10 |
Открыть,уничтоживсодержимоефайла |
|
|
|
(устанавливаетсяпоумолчанию,еслиустановлен |
|
|
|
режим out, либо один из режимов at e или арр). |
ios::nocreate |
|
0x20 |
Открытьтолькосуществующийфайл, еслифайла |
|
|
|
не существует-установить состояние ошибки. |
ios::noreplace |
0x40 |
Создать и открыть только не существующий |
|
|
|
|
файл. Если файл существует - установить состоя- |
|
|
|
ние ошибки. |
ios::binary |
|
0x80 |
Открытьдлядвоичного обмена. |
ПРИЛОЖЕНИЕ 6
БИБЛИОТЕЧНЫЕКЛАССЫИИХ КОМПОНЕНТНЫЕ ФУНКЦИИ
Среди дополнительных средств, не входящих в собственно язык Си++, но отмечаемых в проектах стандарта и входящих в конкретные реализации, важное место занимают классы. Наиболее полезные с точки зрения пользователей и разработчиков компиляторов классы входят в библиотеки классов и поставляются вместе с компиляторами. Здесь можно отметить библиотеку классов потокового ввода-вывода, библиотеку контейнерных классов, а также некоторое количество специализированных классов. Библиотека потокового ввода-вывода подробно разобрана в главе 11, а общий список ее компонентных функций дан в Приложении 5.
Контейнерные классы позволяют программисту с минимальными затратами создавать динамические массивы, списки, деревья, очереди, стеки, включающие элементы разных типов. В настоящее время контейнерные классы входят в наиболее передовые реализации компиляторов, но не стандартизованы. Контейнерные классы заслуживают отдельного тщательного изучения при подготовке профессиональных программистов. Объем настоящего пособия не позволяет рассмотреть их подробно, а бойкое перечисление имен и названий классов ничего читателю не даст. Некоторую информацию о возможностях контейнерных классов можно найти в работе [19]. Однако за подробностями следует обращаться к технической документации по конкретным компиляторам и библиотекам классов.
В стандартные библиотеки компиляторов входят и менее объемные, но не менее полезные для частных применений классы. Остановимся на двух их них.
Класс complex становится доступным в программе после подключения заголовочного файла complex. h. В этом файле содержатся как определения класса complex, так и все операции-функции, необходимые для работы с его объектами, т.е. с комплексными числами, а именно:
•все арифметические операции (+, * и т.д.);
•операции присваивания (=,+= ит.д.);
•потоковые операции записи « и чтения »;
•обычные математические функции, которые вызываются только
втом случае, если фактический параметр имеет тип complex.
Приложение 6. Библиотечные классы и их компонентные функции |
529 |
Вклассе complex имеются две формы конструктора объектов: complex complex();
complex complex (double real, double iznag = 0) ;
где complex - структура, описанная в файле math.h следующим образом:
struct complex { double x, у;
};
x и у - соответственно вещественная и мнимая части комплексного числа.
При использовании первого конструктора создается комплексное число с нулевыми вещественной и мнимой частями (х=*о, y==o). Во второй форме можно задавать либо вещественную и мнимую части одновременно, либо только одну вещественную часть комплексного числа. В последнем случае мнимая часть инициализируется нулевым значением.
Примеры:
complex zl(); |
// х=0 , у=0 |
||
complex |
z2(5.0); |
// х«=5.0, |
у«=0 |
complex |
z3(5.0,-1.0); // х=*5.0, |
у««-1.0 |
Таблица176.1
Компонентные и дружественные функции класса complex
Функция Прототипикраткоеописаниедействий
abs |
double abs (complex x) ; |
|
Возвращает модуль комплексного числа z |
acos |
complex acos(complex z); |
|
Возвращает значение арккосинуса комплексного числа z |
arg |
double arg(complex z); |
|
Возвращает главное значение аргумента комплексного числа z |
|
(-л<argz^я) |
asm |
complex asin(complex z); |
|
Возвращает значение арксинуса комплексного числа z |
atan |
complexatan(complexx ) ; |
|
Возвращает значение арктангенса комплексного числа z |
530 |
Язык Си++ |
|
|
ТаблицаП6.1(продолжение) |
|
Функция |
Прототип икраткое описание действий |
|
СОП) |
double conj(complex z ) ; |
|
|
Возвращает комплексносопряженное к комплексному числу z |
|
COS |
complex cos(complex z ) ; |
|
|
Возвращает значение косинуса комплексного числа z |
|
cosh |
complex cosh(complex z ) ; |
|
|
Возвращает значение гиперболического косинуса комплексного |
|
|
числа z |
|
exp |
complex exp(complex z ) ; |
|
|
Возвращает значение функции еж комплексного числа z |
|
imag |
double imag(complex z ) ; |
|
|
Возвращает мнимую часть комплексного числа z |
|
log |
complex log(complex z); |
|
Возвращает значение натурального логарифма комплексного |
||
|
||
|
числа z |
|
loglO |
complex loglO(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 |
Приложение 6. Библиотечные классы и их компонентные функции |
5 3 1 |
|||
|
|
ТаблицаПб.1(продолжение) |
||
Функция |
Прототип икраткоеописаниедействий |
|
||
sqrt |
complex sqrt(complex z); |
|
|
|
|
Возвращает одно из значений квадратного корня из комплексно- |
|||
|
го |
( argz |
argz |
|
|
го числа z по формуле: Vz = I z I • cos——+ i•sin—— |
|
||
tan |
complex tan(complex z); |
|
|
|
|
Возвращает значение тангенса комплексного числа z |
|
||
tanh |
complex tanh(complex |
z ) ; |
|
|
Возвращает значение гиперболического тангенса комплексного числа z
Другой полезный класс - string - описывается в заголовочном файле cstring.h. В компиляторе ВС++ 4.5 этот класс содержит 11 форм конструкторов объектов (см. [30]):
string () ;
Конструктор по умолчанию. Создает строку нулевой длины, string(const strings s);
Создает строку, совпадающую с полученной по ссылке з. string(const strings s, size_t start, size_t n « NPOS);
Создает строку, содержащую п байт, начиная с позиции start исходной строки з. Тип size_t определен в заголовочном файле так: typedef unsigned size_t; знг .ение NPOS определено как unsigned (-1), т.е. 32767.
string(const char *ср);
Копирует строку, адресуемую указателем ср (до первого нулевого символа).
string(const char *ср, size_t start, size_t n = NPOS);
Создает строку, содержащую п байт, начиная с позиции start исходной строки ср.
s t r i n g ( [ u n ] s i g n e d char с ) ;
Создает строку, состоящую из одного символа с. string([un]signed char c, size_t n = NPOS);
Создает строку, состоящую из п символов с. string(const TSubString _FAR £ss);
Создает строку из подстроки ss. string(HINSTANCE instance, UINT id, int len = 255);
Создает строку в программах для Windows из ресурса.
34*
532 |
Язык Си++ |
Класс string замечателен тем, что в нем реализована технология, называемая "копировать при записи" ("copy-on-write"). Это означает, что при создании новых объектов класса string копируется не сама порождающая строка, а лишь указатель на нее. При дальнейших чтениях информации из этого объекта на самом деле выполняются операции не с новой, а с порождающей строкой. Реальное же выделение памяти для объекта и копирование содержимого исходной строки происходит только в том случае, если в строку нового объекта вносятся изменения.
Таблица П6.2
Компонентные и дружественные функции класса string
Функция |
|
|
Прототипикраткоеописаниедействий |
|||||
ansi_to_ |
void ansi_to_oem() ; |
|
|
|
|
|||
oem |
Конвертирует строку из кодировки ANSI (Windows) в кодировку |
|||||||
|
OEM (MS-DOS) (доступна только при компиляции программ для |
|||||||
|
Windows, в т.ч. в режиме EasyWin) |
|
|
|||||
append |
strings |
append(const |
strings |
s); |
||||
|
strings |
append(const |
strings |
s, |
size_t start, |
|||
|
size_t n • NPOS); |
|
|
|
|
|||
|
strings append(const char *cp, size_t start, |
|||||||
|
size_t n = NPOS); |
|
|
|
|
|||
|
Добавляет к исходной строке соответственно строку s или не |
|||||||
|
более п символов (начиная с символа start) строки в (ср) |
|||||||
|
Все три формы возвращают ссылку на результат |
|||||||
assign |
strings |
assign(const |
strings |
a) ; |
||||
strings |
assign(const |
strings |
s, |
size_t s t a r t , |
||||
|
||||||||
|
size_t n - NPOS); |
|
|
|
|
|||
|
Меняет содержимое исходной строки на соответственно строку s |
|||||||
|
или п символов (начиная с символа start) из строки з |
|||||||
compare |
int compare(const strings s) |
|
||||||
|
int compare(const strings s, size_t orig, size_t |
|||||||
|
n » NPOS) |
|
|
|
|
|||
|
Сравнивает исходную строку соответственно со строкой s или п |
|||||||
|
символами строки s. Возвращает целое число, меньшее, большее |
|||||||
|
или равное нулю в зависимости от результата сравнения строк |
|||||||
contains |
in t |
contains(const |
char *pat) |
const; |
||||
|
in t |
contains(const |
strings s) |
|
const; |
Возвращает 1, если подстрока pat (s) найдена в исходной строке в противном случае возвращает О
Приложение 6. Библиотечные классы и их компонентные функции |
533 |
1 |
|
|
Таблиц П6.2 (продолжение) |
|
|
Функция |
Прототипикраткоеописаниедействий |
|
|
сору |
size_t copy(char *cb, size_t n « NPOS); |
|
|
|
size_t copy(char *cb, size_t n, size_t pos); |
|
|
Копирует не более n символов (начиная с pos) исходной строки в строку сЬ. Возвращает число скопированных символов string сору() const throw(xalloc);
Возвращает копию исходной строки
с str const char *c_str() const;
Возвращает указатель (адрес) на исходную строку (или ее копию)
find size_t find(const strings s);
size_t find(const strings s, size_t pos); Возвращает позицию первого вхождения подстроки s в исходную строку (начиная с позиции pos исходной строки) size_t find(const TRegexpS pat, size_t i = 0); size_t find(const TRegexpS pat, size_t *ext, size_t i « 0) const;
Возвращает позицию первого вхождения регулярного выражения pat в исходную строку
Если подстрока не найдена - возвращается NPOS
'nd_first size_t find_first_of(const strings s) const; гГ size_t find__first_of (const strings s, size_t
pos) const;
Возвращает первую позицию исходной строки (начиная с позиции роз), в которой встретился некоторый символ строки s. В случае неуспеха возвращается NPOS
find_first_ size_t find_first_not_of(const strings s) const; not of size_t find_first_not__of (const strings s, size_t
pos) const;
Возвращает первую позицию исходной строки (начиная с позиции pos), содержащую символ, отсутствующий в строке з. В случае неуспеха возвращается NPOS
find_last size_t find_last_of(const strings s) const;
of size_t find_last_of(const strings s, size_t pos) const;
Аналогична find_first_of, но возвращается последняя позиция
534
Функция find_last_not_of
get_at
get_case_sensitive_flag
get_initial_capacity
Язык Си++
Таблица П6.2 (продолжение)
Прототип и краткое описание действий
size_t find_last_not_of(const strings s) const;
size_t find_last_not_of(const strings s, size_t pos) const;
Аналогичнаfind_first_not_of,но возвращается последняя позиция
char get_at (size__t pos) const throw(outofrange);
Возвращает символ исходной строки в позиции pos. Если pos > length () -1, порождается исключение outofrange
static int get_case_sensitive__flag() ; Возвращает I, если при сравнении строк различаются прописные и строчные буквы, 0 - если нет
stati c unsigned get_initial_capacity(); Возвращает количество байт памяти, отведенных под исходную строку (< length () -1)
get_max_waste
get_paranoid_check
get_resize_increment
get_skipwhitespace_flag
hash
initial_capacity
static unsigned get_max_waste(); Возвращает максимальное число байт, которое может быть выделено для строки
stati c int get_paranoid_checJc () ; Возвращает 1, если возможна проверка коллизий хеширования; иначе возвращает 0.
static unsigned get_resize_increment(); Возвращает приращение, изменяющее размер строки.
stati c int get_skipwhitespace_flag(); Возвращает 1, если игнорируются обощенные пробельные символы; иначе возвращает 0.
unsigned hash() const; Возвращает значение хеширования
static size_t initial_capacity(size_t ic • 63);
Устанавливает минимальное количество байт, выделяемых для строки по умолчанию
Приложение 6. Библиотечные классы и их компонентные функции |
535 |
|||
|
|
|
Таблица П6.2 (продолжение) |
|
Функция |
|
Прототип и краткое описание действий |
|
|
insert |
stringfi |
insert(size_t |
pos, const strings s) ; |
|
|
strings |
insert(size_t |
pos, const strings s, |
|
|
size__t start, size_t |
n » NPOS) ; |
|
|
|
С позиции pos в исходную строку вставляется содержимое |
|
||
|
строки s (не более п символов строки в, начиная с позиции |
|||
|
start). Возвращает ссылку на результат |
|
||
is_nuU |
int is_null() const; |
|
|
|
|
Возвращается 1, если исходная строка пуста, и 0 - в про- |
|
||
|
тивном случае |
|
|
|
length |
unsigned |
length() const; |
|
|
|
Возвращает число символов в исходной строке |
|
||
MaxWaste |
static size_t MaxWaste(size_t mw = 63); |
|
||
|
Установить максимальное число байт, выделяемых для стро- |
|||
|
ки |
|
|
|
oem_to_ansi
prepend
void oem_to_ansi () ;
Конвертирует строку из кодировки OEM (MS-DOS) в кодировку ANSI (Windows) (доступна только при компиляции программ для Windows, в т.ч. в режиме EasyWin)
strings prepend(const strings s ) ;
strings prepend(const strings s, size_t start,• size_t n = NPOS);
strings prepend(const char *cp );
strings prepend(const char *cp, size_t start, size_t n » NPOS);
Вставляет в начало исходной строки строку s (cp) (п символов строки s (ср). начиная с позиции start)
put at |
void put_at(size_t pos, char |
с) |
|
throw(outofrange); |
|
|
Заменяет символ в позиции pos исходной строки символом с. |
|
|
Если pos > length () -1, порождается исключение |
|
|
outofrange |
|
eadjile |
istreams read_file(istreanS |
i s ) ; |
|
"читать строку из входного потока is (до символа EOF или |
|
|
NULL) |
|
ead line |
streams read_line(istreamS |
i s ) ; |
|
'читать строку из входного потока is (до символа перевода |
|
|
строки или EOF) |
|