Глобальные переменные
Borland С++ предусматривает ряд предопределенных глобальных
переменных, которые могут использоваться при работе с датой, временем, аргументами командной строки и т.д.
Переменная _8087 (dos.h)
Флаг микропроцессора (для DOS, Win16, Win32). Устанавливается в ненулевое значение, если логика автообнаружение кода запуска
обнаруживает наличие сопроцессора. Эту логику можно переопределить установкой переменной операционной среды 87.
Переменная _argc (dos.h)
Содержит число аргументов командной строки (для DOS, Win16,
Win32 и OS/2) - значение argc, переданное main при запуске программы.
Переменная _argv (dos.h)
Массив указателей на аргументы командной строки (для DOS,
Win16, Win32 и OS/2). Элементы этого массива передаются программе
при ее запуске.
Переменная _ctype (ctype.h)
Информационных массив символьных атрибутов (для DOS, Win16,
Win32 и OS/2), индексируемых значением ASCII +1. Каждая запись это битовый набор, описывающий символ.
Переменная _daylight (time.h)
Указывает, требуется ли сохранение настраиваемого времени
суток (для DOS, Win16, Win32 или OS/2). Используется функциями
даты и времени. Принимает значения 1 (сохраненное время) и 0
(стандартное).
Переменная _directvideo (cohio.h)
Флаг, управляющий видеовыводом (для DOS, Win16, Win32). Определяет вывод непосредственно в видеопамять (1) или через вызовы
BIOS в ПЗУ (0). По умолчанию равна 1. Эту переменную следует использовать только в символьных приложениях.
Переменная _environ (dos.h)
Позволяет обращаться к системным переменным операционной
среды и представляет собой массив указателей на строки "переменная=значение" (для DOS, Win16, Win32 и OS/2). Значение в строке
может быть пустым. При выполнении значения переменных среды передаются непосредственно программе.
Обращаться к _environ можно через getenv, а добавлять, изменять или удалять записи массива _environ - с помощью getenv.
Переменные errno, _doserrno, _sys_errlist, _sys_nerr (dos.h, errno.h)
Для печати сообщений об ошибке разрешает perror (для DOS,
Win16, Win32 и OS/2). Функция perror использует эти переменные
для вывода сообщений об ошибках.
Переменная | Назначение
|
---|
errno | Указывает тип ошибки при математическом
или системном вызове. В других ситуациях
не содержит кода ошибки.
|
_doserrno | Содержит фактический код ошибки операционной системы, когда вызов операционной системы дает ошибку.
|
_sys_errlist | Массив строк сообщений. В качестве индекса
массива для поиска строки по номеру ошибки
можно использовать errno.
|
_sys_nerr | Число строковых сообщений в _sys_nerr.
|
Мнемонические обозначения в _sys_errlist показаны в следующей таблице:
Мнемоника | Описание
|
---|
E2BIG | Слишком длинный список аргументов.
|
EACCES | В разрешении отказано.
|
EBADF | Неверный номер файла.
|
ECHILD | Нет дочернего процесса (Ч).
|
ECONTR | Попытка удаления текущего каталога CurDir.
|
EDEADLOCK | Нарушение блокировки (Ч).
|
EDOM | Ошибка домена (*) или математического аргумента (Ч).
|
EEXIST | Файл уже существует.
|
EFAULT | Неизвестная ошибка.
|
EINTR | Прерванный функциональный вызов (Ч).
|
EINVACC | Недопустимый код доступа.
|
EINVAL | Недопустимый аргумент.
|
EINVDAT | Недопустимые данные.
|
EINDRV | Недопустимая спецификация диска.
|
EINVENV | Недопустимая операционная среда.
|
EINVFMP | Недопустимый формат.
|
EINVFNC | Недопустимый номер функции.
|
EINVMEM | Недопустимый адрес блока памяти.
|
EIO | Ошибка ввода-вывода (Ч).
|
EMFILE | Открыто слишком много файлов.
|
EMATOOLONG | Слишком длинное имя файла (Ч).
|
ENFILE | Слишком много открытых файлов.
|
ENMFILE | Файлов больше нет.
|
ENODEV | Нет такого устройства.
|
ENOENT | Нет такого файла или каталога.
|
ENOEXEC | Ошибка формата выполняемого файла.
|
ENOMEM | Не хватает памяти.
|
ENOPATH | Маршрут не найден.
|
ENOSPC | На устройстве не осталось места (Ч).
|
ENOTSAM | Не то же устройство.
|
ENXIO | Нет такого устройства или адреса (Ч).
|
EPERM | Операция не разрешена (Ч).
|
EPIPE | Нарушение конвейера (Ч).
|
ERANGE | Результат вне диапазона (*) или слишком велик (Ч).
|
EORFS | Файловая система доступна только по чтению (Ч).
|
ESPIPE | Неразрешенная операция установки позиции (Ч).
|
EXDEV | Перекрестная связь между устройствами.
|
EZER0 | Ошибка 0.
|
(Ч) - только для 32-разрядных приложений.
(*) - только для 16-разрядных приложений.
Ниже перечислены мнемоники фактических кодов ошибок DOS, в
которые может устанавливаться _doserrno (это значение может не
отображаться через errno):
Мнемоника | Код ошибки DOS
|
---|
E2BIG | Неверная операционная среда.
|
EACCES | Доступ запрещен.
|
EACCES | Неверный доступ.
|
EACCES | Это текущий каталог.
|
EBADF | Неверный описатель.
|
EFAULT | Зарезервирован.
|
EINVAL | Неверные данные.
|
EINVAL | Неверная функция.
|
EMFILE | Слишком много открытых файлов.
|
ENOENT | Такого файла или каталога нет.
|
ENOEXEC | Неверный формат.
|
ENOMEM | Нет памяти.
|
ENOMEM | Плохой блок.
|
EXDEV | Неверный диск.
|
EXDEV | Не то же устройство.
|
Переменная _floatconvert (stdio.h)
Компонует форматы с плавающей точкой (для DOS, Win16, Win32
и OS/2). Вывод с плавающей точкой требует компоновки подпрограмм
преобразования. Для уменьшения размера такая компоновка автоматически не выполняется. Однако, она выполняется автоматически при
использовании в программе математической подпрограммы или получении числа с плавающей точкой.
Переменная _fmode (fcntl.h)
Определяет заданный по умолчанию режим трансляции - текстовый или двоичный (для DOS, Win16, Win32 и OS/2). По умолчанию задается текстовый режим: при вводе возврат каретки/перевод строки
транслируется в перевод строки, а при выводе наоборот.
Переменная _new_handler
Перехватывает операции распределения (для DOS, Win16, Win32
и OS/2). Содержит указатель на функцию без аргументов, возвращающую void. При невозможности распределения памяти будет вызываться
функция, на которую указывает данная переменная. В качестве альтернативы можно использовать функцию _set_new_handler.
Переменные _osmajor, _osminor_, _osversion (dos.h)
Содержит основной и дополнительный номера версии операционной системы (для DOS, Win16, Win32 и OS/2).
Переменная _psp (dos.h)
Содержит адрес сегмента PSP для текущей программы (для DOS,
Win16, Win32 и OS/2). PSP - это дескриптор процесса DOS, который
содержит начальную информацию о программе.
Переменная _threadid (stddef.h)
Указатель на идентификатор нити (для DOS, Win32 и OS/2).
Это значение длинного целого типа, идентифицирующее текущую выполняемую нить.
Переменные __throwExceptionName, __throwFileName, __throwLineNumber (except.h)
Генерируют информацию о порожденной исключительной ситуации
(для DOS, Win16, Win32 и OS/2). Эти глобальные переменные позволяют получить имя и место возникновения особой ситуации (в виде
текстовой строки).
Переменная _timezone (time.h)
Содержит разницу в секундах между местным временем и временем по Гринвичу (для DOS, Win16, Win32 и OS/2). Используется
функциями даты и времени.
Переменная _tzname (time.h)
Массив указателей на имена временных поясов (для DOS, Win16,
Win32 и OS/2).
Переменная _version (dos.h)
Содержит номер версии операционной системы (для DOS, Win16,
Win32 и OS/2). Основной номер версии находится в старшем байте
(или слове для 32-разрядного приложения).
Переменная _wscroll (conio.h)
Разрешает или запрещает прокрутку в консольных функциях ввода-вывода (для DOS, Win16, Win32 и OS/2). По умолчанию прокрутка
разрешена - переменная имеет значение 1. При установке в 0 прокрутка запрещается. Данную переменную следует использовать только
в текстовых приложениях.
Потоковые классы С++
Библиотека потоковых классов в С++ состоит из нескольких
классов, распределенным по двум отдельным иерархическим деревьям.
Данный справочный материал содержит некоторые наиболее полезные
детали таких классов. Перечисляемые классы содержатся в различных
файлах заголовков:
Файл заголовка | Классы
|
---|
constrea.h | conbuf, constream (только для приложений консольного режима).
|
iostream.h | ios, iostream, iostream_withassign, istream,
istream_withassign, streambuf
|
fstream.h | filebuf, fstream, ostream, strstream, strstre-
ambase, strstreambuf.
|
Класс conbuf (constrea.h)
Специализирует streambuf для обработки консольного вывода.
Функции-элементы
Constructor | Создает подключенный conbuf.
|
clreol | Очищает экран до конца текстового окна.
|
clrscr | Очищает заданный экран.
|
delline | Удаляет строку в окне.
|
gotoxy | Позиционирует курсор в заданной позиции окна.
|
highvideo | Выделяет символы повышенной яркостью.
|
insline | Вставляет пустую строку.
|
lowvideo | Выделяет символы пониженной яркостью.
|
normvideo | Задает нормальную интенсивность символов.
|
overflow | Выводит содержимое conbuf.
|
setcursotype | Задает вид курсора.
|
textattr | Задает атрибут текста.
|
textbackground | Задает текстовый фоновый курсор.
|
textmode | Переводит курсор в текстовый режим.
|
wherex | Получает горизонтальную позицию курсора.
|
wherey | Получает вертикальную позицию курсора.
|
window | Определяет активное окно.
|
Класс constream (constrea.h)
Обеспечивает потоки вывода на консоль. Этот класс является
производным от ostream и доступен только для приложений консольного режима.
Функции-элементы
Constructor | Определяет для консоли неподсоединенный поток
вывода.
|
clrscr | Очищает экран.
|
rdbuf | Возвращает указатель на назначенный для потока conbuf.
|
textmode | Переводит экран в текстовый режим.
|
window | Определяет активное окно.
|
Класс filebuf (fstream.h)
Специализирует streambuf для ввода и вывода символов. Управляет выделением и удалением буфера, а также установкой позиции в
файле. Позволяет с помощью соответствующего конструктора или
функции-элемента использовать небуферизованный ввод-вывод. По
умолчанию файлы открываются в режиме openprot и допускают чтение
или запись. Этот класс обеспечивает только базовые средства для
ввода-вывода. Операции ввода-вывода выполняются с помощью функций
streambuf.
Элементы данных
openprot | Заданная по умолчанию защита файла. Определяет разрешение чтения из файла и записи в файл.
|
Функции-элементы
constructor | Создает filebuf, не подключенный к файлу, или
подключенный к файлу с заданным дескриптором.
|
attach | Связывает закрытый filebuf с файлом, заданным
дескриптором. Если файловый буфер уже открыт,
возвращает NULL.
|
close | Выводит содержимое буфера и закрывает файл.
Обычно не требует явного вызова, т.к. закрытие обеспечивается деструктором. В случае
ошибки возвращает 0.
|
fd | Возвращает дескриптор файла или EOF.
|
is_rtl_open | Возвращает в случае открытия файла ненулевое
значение.
|
open | Открывает файл, заданный именем, и подключается к нему. Режим открытия задается аргументом режима.
|
overflow | Выводит буфер по указанному назначению. Выполняемые действия должны определяться в каждом классе.
|
seekoff | Устанавливает указатель по заданному смещению, перемещая его в заданном направлении относительно текущей позиции. Возвращает значение позиции.
|
setbuf | Выделяет буфер заданного размера для использования в качестве в filebuf. Если файл уже открыт, а буфер выделен, то происходит ошибка, и sefbuf возвращает NULL.
|
sync | Согласовывает внутренние структуры данных и
внешнее представление потока.
|
underflow | Делает ввод доступным. Вызывается при отсутствии данных во входном буфере.
|
Класс fstream (fstream.h)
Этот потоковый класс является производным от fstreambase и
iostream и выполняет с помощью filebuf одновременный ввод и вывод.
Функции-элементы
Constructor | Создает fstream, не подключенный или подключенный к файлу с заданным дескриптором.
|
open | Открывает для fstream файл, заданный именем
и режимом открытия.
|
rdbuf | Возвращает используемый filebuf.
|
Класс fstreamable (fstream.h)
Этот производный от ios класс обеспечивает общие для файловых потоков операции. Он используется в качестве базового для
fstream, ifstream и ofstream.
Функции-элементы
Constructor | Создает fstreambase, не подключенный или подключенный к файлу с заданным дескриптором.
|
attach | Связывает с дескриптором открытого файла.
|
open | Закрывает соответствующий filebuf и файл.
|
rdbuf | возвращает используемый filebuf.
|
setbuf | Резервирует указанную область памяти, способную вместить указанное число байт.
|
Класс ifstream (fstream.h)
Этот производный от fsreambase потоковый класс обеспечивает
операции ввода через filebuf.
Функции-элементы
Constructor | Создает ifstrem, не подключенный к файла или
подключенный к заданному или открытому файлу.
|
open | Открывает файл для ifstream.
|
rdbuf | Возвращает используемый filebuf.
|
Класс ios (iostream.h)
Обеспечивает общие операции для ввода и вывода. Производные
от него классы (istream, ostream, iostream) специализируют
ввод-вывод с помощью операций форматирования высокого уровня.
Класс ios является базовым для istream, ostream, fstreambase и
strstreambase.
Флаги формата
Флаг | Описание
|
---|
skipws | Пропускает при вводе пробелы и разделители.
| left | Выравнивание вывода влево.
| right | Выравнивание вывода влево.
| internal | Дополнение после знака или указателя основания.
| dec | Десятичное преобразование.
| oct | Восьмеричное преобразование.
| hex | Шестнадцатиричное преобразование.
| showbase | Показывает в выводе индикатор основания.
| showpoint | Показывает при выводе с плавающей точкой десятичную точку.
| uppercase | Преобразует шестнадцатиричный вывод в верхний
регистр.
| showpos | Выводит с положительными числами символ '+'.
| scientific | Добавляет к числам с плавающей точкой суффикс
с показателем степени (E).
| fixed | Для вывода чисел с плавающей точкой использует десятичную фиксированную точку.
| unitbuf | После включения выводит все потоки.
| stdio | После включения выводит stdout и stderr.
|
Элементы данных
adjustfield | Эти константы используются в качестве второго
| basefield | параметра функции self. Они задают выравнива floatfield ние, систему счисления и формат числа.
| seek_dir | Направление установки в потоке.
| open_mode | Режим потоковой операции.
| *pb | Соответствующий streambuf.
| x_fill | Символ заполнения для вывода.
| x_flags | Битовые флаги форматирования.
| x_precision | Точность выводимых чисел с плавающей точкой.
| state | Текущее состояние streambuf.
| *x_tie | Связанный ostream (если он существует).
| x_width | Ширина поля при выводе.
|
Функции-элементы
Constructor | Связывает данный streambuf с потоком или
строит объект ios без соответствующего streambuf.
| bad | Не 0 в случае ошибки.
| bitalloc | Получает новый флаг битового набора. Возвращаемое значение может использовать для установки, очистки и проверки флаги. Это флаги
форматирования, определяемые пользователем.
| eof | В конце файла возвращает ненулевое значение.
| fail | Не 0 при неуспешном выполнении операции.
| fill | Возвращает текущий символ-заполнитель или
сбрасывает его, возвращает предыдущий символ.
| flags | Сбрасывает текущие флаги форматирования.
| good | Не 0, если биты состояния не установлены (то
есть нет ошибок).
| presicion | Возвращает текущую точность числа с плавающей
точкой.
| rdbuf | Возвращает указатель на streambuf, назначенный для данного потока.
| rdstate | Устанавливает флаги в соответствии с заданным
значением.
| setf | Возвращает ранее установленные флаги.
| sync_with_stdio | Смешивает файлы stdio и потоки iostreams. В
новой программе этого использовать не следует.
| tie | Возвращает связанный поток или NULL, если такого потока не существует, или связывает с выходным потоком другой поток.
| unseft | Очищает биты, соответствующие f, и возвращает
значение, представляющее собой предыдущие установки.
| with | Возвращает или устанавливает текущую ширину.
| xalloc | Возвращает индекс в массиве ранее не используемых слов, которые можно применять как флаги форматирования.
| init | Выполняет фактическую инициализацию.
| selstate | Устанавливает все биты состояния.
|
Класс iostream (iostream.h)
Данный производный от istream и ostream класс представляет
собой смесь своих базовых классов для ввода и вывода в поток. Он
является базовым для fstream и strstream.
Функции-элементы
Constructor | Связывает с потоком заданный streambuf.
|
Класс iostream_withassign (iostream.h)
Этот класс представляет собой iostream c добавленными оператором присваивания.
Функции-элементы
Constructor | Заданный по умолчанию конструктор (вызывает
конструктор iostream).
|
Класс istream (iostream.h)
Обеспечивает форматированный и неформатированный ввод из
streambuf. Для фундаментальных типов операция >> переопределяется. Базовым для данного класса является класс ios.
Функции-элементы
Constructor | Связывает с потоком данный streambuf.
| gcount | Возвращает число последний раз выделенных
символов.
| get | Получает следующий символ либо EOF, сохраняя
их в буфере.
| getline | То же, что и get, но ограничитель также считывается.
| ignore | Пропускает n символов в потоке. При обнаружении delim останавливается.
| ipfx | Вызывается функциями ввода перед выборкой из
входного потока.
| peek | Возвращает следующий символ без извлечения.
| putback | Помещает символ обратно в поток.
| read | Извлекает из потока и помещает в массив указанное число символов.
| seekg | Перемещает заданное число байт относительно
текущей позиции для потока ввода. Можно задавать направление.
| tellg | Возвращает текущую позицию курсора. В случае
неуспешного выполнения возвращает отрицательное число.
| eatwrite | Извлекает последовательные пробелы.
|
Класс istream_withassign (iostream.h)
Этот класс представляет собой istream с добавленной операцией присваивания.
Функции-элементы
Constructor | Используемый по умолчанию конструктор (вызывает конструктор istream).
|
Класс istream (strstrea.h)
Обеспечивает для strstreambuf операции ввода. Этот класс является производным от strstreambase и istream.
Функции-элементы
Constructor | Создает istream с заданной строкой (нулевой
символ не извлекается).
|
Класс ofstream (fstream.h)
Является производным от fstreamable и ostream и обеспечивает
для filebuf операции ввода.
Функции-элементы
Constructor | Создает osftream, не подключенный к файлу или подключает его к предварительно открытому файлу.
| open | Открывает файл для заданного ofstream.
| rdbuf | Возвращает используемый filebuf.
|
Класс ostream (iostream.h)
Обеспечивает для streambuf форматированный или неформатированный вывод. Для всех фундаментальных типов операция << переопределяется. Этот производный от ios класс является базовым для
constream, iostream, ofstream, ostrstream и ostream_withassing.
Функции-элементы
Constructor | Связывает с потоком заданный streambuf.
| flush | Сбрасывает поток.
| opfx | Вызывается функциями вывода перед включением
в поток вывода. Возвращает 0, если ostream
имеет ненулевое состояния ошибки.
| osfx | Выполняет операции, необходимые после операций вывода.
| put | Вставляет символ.
| seekp | Перемещает в абсолютную позицию или позицию
относительно текущей позиции.
| tellp | Возвращает текущую позицию потока.
| write | Вставляет указанное число символов (включая
нули.
|
Класс ostream_withassign (iostream.h)
Этот класс представляет собой ostream с добавленной операцией присваивания.
Функции-элементы
Constructor Используемый по умолчанию конструктор (вызывает конструктор ostream).
|
Класс oststream (strstrea.h)
Является производным от strstreambase и ostream и обеспечивает для strstreambuf операции вывода.
Функции-элементы
Constructor | Создает динамический ostrstream с буфером заданного размера.
| pcount | Возвращает число байт, сохраненный в данный
момент в буфере.
| str | Возвращает и деактивизирует буфер. Если он
был динамическим, вы должны отменить его.
|
Класс streambuf (iostream.h)
Это базовый класс для всех других классов буферизации. Он
обеспечивает буферный интерфейс между вашими данными и областями
памяти, такими как память физических устройств. К содержимому
этих областей можно обращаться по указателю.
Функции-элементы
Constructor | Создает пустой объект буфера.
| in_avail | Возвращает число символов, оставшихся в буфере ввода.
| out_waiting | Возвращает число символов, оставшихся в буфере вывода.
| sbumpc | Возвращает число символов в текущем буфере
ввода, а затем продвигает позицию.
| seekpos | Перемещает указатель на абсолютную позицию.
| sgetc | Устанавливается на следующий символ в буфере
ввода.
| snextc | Продвигает позицию и возвращает следующий
символ в буфере ввода.
| sputbackc | Возвращает символ в поток ввода.
| sputc | Помещает в буфер вывода один символ.
| sputn | Помещает в буфер вывода n символов.
| stossc | Продвигает позицию до следующего символа в
буфере ввода.
| allocate | Задает область вывода.
| base | Возвращает начало буфера вывода.
| blen | Возвращает длину буфера вывода.
| eback | Возвращает начало секции обратного занесения
в области получения.
| ebuf | Возвращает из области буфера end+1.
| epptr | Возвращает из области get или put end+1.
| gbump | Продвигает указатель get.
| gptr | Возвращает следующую ячейку в области get.
| pbase | Возвращает начало области put.
| pbump | Продвигает указатель put.
| pptr | Возвращает следующую ячейку в области put.
| setb | Устанавливает область буфера.
| setg | Инициализирует указатели get.
| setp | Инициализирует указатель put.
| unbuffered | Устанавливает состояние буферизации или возвращает не 0 в случае отсутствия буферизации.
|
Класс strstreambase (strstrea.h)
Специализирует ios для строковых потоков. За исключением
функции-элемента strstreambase::rdbuf, весь класс является защищенными. Этот класс является базовым для strstream, istrstream и
ostrstream.
Функции-элементы
Constructor | Создает strstreambase (пустой или с заданным
буфером и начальным значением).
| rdbuf | Возвращает указатель на связанный с данным
объектом strstreambuf.
|
Класс strstreambuf (strstrea.h)
Специализирует streambuf для форматирования в памяти.
Функции-элементы
Constructor | Создает динамический strstreambuf. Память будет распределяться при необходимости или создает динамический буфер с заданными функциями
выделения и освобождения.
| deallocate | Выполняет выделение буфера на нижнем уровне.
| freeze | Если параметр ввода ненулевой, то запрещает
запись символов в буфер. Передача нулевого значения вновь активизирует буфер.
| overflow | Выводит буфер по указанному назначению. Выполняемое действие должно определяться в каждом производном классе.
| seekoff | Перемещает указатель относительно текущей позиции.
| setbuf | Задает используемый буфер.
| str | Возвращает указатель на буфер и активизирует
его.
| sync | Устанавливает соответствие между внутренними
структурами данных и внешним представлением
потоков.
| underflow | Делает буфер ввода доступным. Вызывается,
когда запрашивается символ, а strstreambuf
пуст. Выполняемые действия должны определяться в производном классе.
|
Класс strstream (strstrea.h)
Обеспечивает для strstreambuf одновременный ввод и вывод.
Этот класс является производным от strstreambase и iostream.
Функции-элементы
Constructor | Создает динамический strstream.
| str | Возвращает и деактивизирует буфер. Если он
был динамическим, то пользователь должен освободить его.
|
Постоянные потоковые классы и макрокоманды
Borland поддерживает постоянные потоки, состоящие из иерархии класса и макрокоманд, помогающих вам строить потоковые объекты.
Иерархия классов постоянных потоков
Иерархия классов постоянных потоков представляется следующей
схемой:
pstream
^ ^ ^
TStreamable
^ ^
ipstream opstream fpbase
^ ^ ^ ^
ofpstream
ifstream
Двойная стрелка указывает, что TStreamableBase - это дружественный класс.
Класс fpbase (objstm.h)
Обеспечивает базовые операции, общие для всех потоков ввода-вывода объектного файла.
Функции-элементы
attach | Если это возможно, связывает файл с заданным
дескриптором с данными потоком.
| close | Закрывает поток и соответствующий файл.
| open | Открывает файл с указанным именем с заданными
режимом и защитой. Открытый файл подключается
к данному потоку.
| rdbuf | Возвращает указатель на текущий файловый буфер.
| setbuf | Выделяет буфер указанного размера.
|
Класс ifpstream (objstrm.h)
Обеспечивает базовый класс для чтения (извлечения) потоковых
объектов из потоков.
Функции-элементы
Constructor | Создает буферизованный объект ifstream. Вы
можете задать размер и начальное содержимое буфера, а также открыть файл и подключить его к потоку, задав имя, режиме и защиту или дескриптор файла.
| open | Открывает указанный файл с заданным режимом и
защитой. По умолчанию задается режим in
(ввод) и защита openprot. Открытый файл связывается с потоком.
| rdbuf | Возвращает указатель на текущий файловый буфер.
|
Класс ipstream (objstrm.h)
Обеспечивает базовый класс для чтения (извлечения) альтернативных объектов.
Функции-элементы
Constructor | Создает буферизованный ipstream c заданным
буфером и устанавливает элемент данных bp.
Защищенная форма конструктора не инициализирует указатель буфера.
| find | Возвращает указатель на объект, соответствующий заданному идентификатору.
| freadBytes | Считывает в указанный буфер заданное число
байт.
| freadString | Считывает строку из буфера. Определяет длину
строки и выделяет соответствующий символьный
массив far. Считывает массив в строку и возвращает указатель на массив. Освободить выделенный блок памяти должна вызывающая сторона.
| getVersion | Возвращает номер версии объекта.
| readByte | Возвращает символ в текущей позиции курсора.
| readBytes | Считывает заданное число байт из текущей позиции потока и записывает их в заданный массив.
| readString | Выделяет буфер для записи строки в текущей
позиции курсора. Считывает строку из потока в
буфер. Либо считывает строку в заданный аргументом буфер.
| readWord | Возвращает 32-битовое слово в текущей позиции
в потоке.
| readWord16 | Возвращает 16-битовое слово в текущей позиции
потока.
| registerObject | Возвращает объект, на который указывает аргумент.
| seekg | Перемещает позицию потока в абсолютную позицию, заданную аргументом или перемещает позицию относительно текущей позиции на указанное
смещение (в прямом или обратном направлении).
| tellg | Возвращает текущую позицию в потоке (абсолютную).
| readData | Вызывает для чтения из потока соответствующую
функцию read и помещает ее в заданный объект. Если объекта не существует, то сначала вызывается функция build.
| readPrefix | Возвращает объект TStreamableClass, соответствующий заданному классу, записанному в текущей позиции.
| readSuffix | Считывает и проверяет конечный байт поля имени объекта.
| readVersion | Устанавливает для потока ввода номер версии.
| Operator >> | Извлекает (считывает) данные из заданного потока ipstream и помещает его в указанный аргумент. Возвращается ссылка на поток, что
позволяет обычным образом использовать цепочку операций.
| flush | Сбрасывает поток.
| fwriteBytes | Записывает заданное число байт из указанного
буфера в поток.
| registerObject | Регистрирует класс объекта, указываемого аргументом.
| registerVB | Регистрирует виртуальный базовый класс.
| seekp | Перемещает текущую позицию потока в заданную
абсолютную позицию или в позицию, заданную смещением.
| tellp | Возвращает абсолютную текущую позицию потока.
| writeByte | Записывает заданный байт в поток.
| writeBytes | Записывает указанное число байт из буфера в
поток.
| writeObject | Записывает объект, на который указывает аргумент, в поток вывода.
| writeObjectPtr | Записывает заданный указатель объекта в поток
вывода.
| writeString | Записывает в поток заданную строку (с предшествующим байтом длины).
| writeWord | Записывает в поток указанное 32-битовое слово.
| writeWord16 | Записывает в поток указанное 16-битовое слово.
| writeWord32 | Записывает в поток указанное 32-битовое слово.
| writeData | Записывает данные в поток путем вызова для
записываемого объекта соответствующей функции-элемента write.
| writePrefix | Записывает в поток класс с указанным префиксом имени. Операция << использует эту
функцию для записи с помощью writeData префикса и суффикса, который используется для
обеспечения надежного потокового ввода-вывода.
| writeSuffix | Записывает в поток класс с указанным суффиксом имени. Операция << использует эту функцию для записи с помощью writeData префикса и
суффикса, который используется для обеспечения надежного потокового ввода-вывода.
| operator << | Включает (записывает) заданный аргумент в
указанный объект ipstream. Тип данный определяет подразумеваемую форму записи.
|
Класс pstream (objstrm.h)
Это базовый класс для управления потоковыми объектами.
Элементы данных
bp | Указатель на буфер потока.
| state | Флаги состояния формата.
|
Функции-элементы
Constructor | Создает буферизованный pstream с заданным буфером и устанавливает элемент данных в bp. Состояние устанавливается в 0.
| Destructor | Уничтожает объект pstream.
| bad | В случае ошибки возвращает не 0.
| clear | Устанавливает состояние потока в заданное
значение (по умолчанию 0).
| eof | В конце потока возвращает не 0.
| fail | В случае неудачного завершения потоковой операции возвращает ненулевое значение.
| good | Возвращает не 0, если биты состояния не установлены (то есть нет ошибок).
| rdbuf | Возвращает указатель pb на назначенный потоку
буфер.
| rdstate | Возвращает текущее значение состояния.
| operator void *() | Переопределяет операцию приведения типа (указателя на void). При неуспешном выполнении возвращает 0.
| operator !() | Переопределяет операцию NOT. Возвращает значение, переданное pstream::fail.
| init | Инициализирует поток: устанавливает состояние
в 0, а bp - в переданный аргумент sbp.
| setstate | Обновляет элемент данных state значением state |= (b & 0xFF).
|
Класс TStreamableBase (objstrn.h)
Классы, наследующие из TStreamableBase, называются потоковыми классами. Это означает, что их объекты могут записываться в
потоки и считываться из них. Для построения собственных потоковых
классов также нужно использовать этот базовый класс. Можно воспользоваться и множественным наследованием.
Функции-элементы
Destructor | Уничтожает объект TStreamableBase().
| CastableID | Обеспечивает поддержку надежного приведения
типов. Возвращает строку, содержащую имя типа.
| FindBase | Возвращает указатель на базовый класс.
| MostDerived | Возвращает указатель void на фактический потоковый объект.
|
Класс TStreamable (streambl.h)
Используется частным классом базы данных и pstream для регистрации в потоковом классе.
Функции-элементы
Constructor | Создает объект TStreamableClass с заданным
именем и функцией построения, затем регистрирует тип. Каждый потоковый класс имеет функцию построения build типа BUILDER. Для обеспечения надежного по типу ввода и вывода объектов с использованием потоков администратору потоков требуется доступ к информации об именах и типах каждого класса.
|
Класс TStreamer (objstrm.h)
Базовый класс для всех потоковых объектов.
Функции-элементы
Constructor | Строит объект TStreamer и инициализирует указатель потокового объекта.
| GetObject | Возвращает адрес компонента TStreamable потокового объекта.
| Read | "Чистая" виртуальная функция, которая должна переопределяться в каждом потоковом классе. Из переданного ipstream она должна считывать необходимые элементы данных для потокового класса.
| StreaableName | "Чистая" виртуальная функция-элемент, которая
должна переопределяться для каждого потокового класса. Возвращает имя потокового класса
(строку с завершающим 0), которое используется администратором потока для регистрации
этого класса.
| Write | "Чистая" виртуальная функция-элемент, которая
должна переопределяться для каждого потокового класса. Она должна записывать в заданный
объект opstream необходимые элементы данных потокового класса.
|
Макрокоманда __DELTA (streambl.h)
Вычисляет расстояние (в байтах) между базой потокового объекта и началом компонента TStreamableBase этого объекта.
Макрокоманды, начинающиеся с DECLARE
Макрокоманда DECLARE_STREABABLE (objstrm.h)
Используется в определении класса для добавления элементов, необходимых для организации потока. Так как она содержит спецификаторы доступа, за ней должен следовать спецификатор доступа (или он должен использоваться в конце определения класса). Первым параметром должна быть макрокоманда, расширяющаяся по условию в __import или __export (в зависимости от того, экспортируется или импортируется класс из DLL). Второй параметр - имя потокового
класса, а третий - номер версии объекта.
Макрокоманда DECLARE_STREAMABLE_FROM_BASE (objstrm.h)
Используется аналогично DECLARE_STREAMABLE. Ее не следует
использовать, если класс должен записываться и считываться с помощью функций Read и Write, определенных без изменения в своем
базовом классе. Обычно это происходит, если производный класс переопределяет виртуальные функции базового класса или предусматривает несколько конструкторов, но не добавляет элементов данных.
Макрокоманда DECLARE_ABSTRACT_STREAMABLE (objstrm.h)
Используется в абстрактном классе и содержит ядро потокового
кода. Описывает функции Read и Write, определения которых вы
должны предусмотреть, и функцию Buyild, вызывающую конструктор
TStreabableClass. Описания параметров см. в DECLARE_STREAMABLE.
Макрокоманда DECLARE_STREAMER_FROM_BASE (objstrm.h)
Используется в DECLARE_STREAMABLE_FROM_BASE и описывает вложенный класс Streamer без функций Read и Write. Описания параметров см. в DECLARE_STREAMABLE.
Макрокоманда DECLARE_ABSTRACT_STREAMER (objstrm.h)
Используется в DECLARE_ABSTRACT_STREAMABLE и описывает вложенный класс Streamer без функции Build. Описания параметров см.
в DECLARE_STREAMABLE.
Макрокоманда DECLARE_STREAMABLE_OPS (objstrm.h)
Описывает инсертеры и экстракторы. Для классов шаблонов
должна использовать в качестве макроаргумента class<...>. В других случаях используется только имя класса.
Макрокоманда DECLARE_STREAMABLE_CTOR (objstrm.h)
Описывает конструктор, вызываемый функцией Streamer::Build.
Макрокоманды, начинающиеся с IMPLEMENT
Макрокоманды IMPLEMENT_STREAMABLE1..4 (objstrm.h)
Макрокоманды IMPLEMENT_STREAMABLE генерируют для класса регистрационный объект через IMPLEMENT_STREAMABLE_CLASS и через
IMPLEMENT_ABSTRACT_STREABABLE генерируют различные необходимые
для потокового класса Функции-элементы.
Макрокоманда IMPLEMENT_STREAMABLE используются, когда класс
не имеет других базовых классов, кроме TStreamableBase. Ее единственным параметром является имя класса. Нумерованные версии этой
макрокоманды (IMPLEMENT_STREAMABLE1, IMPLEMENT_STREAMABLE2 и
т.д.) используются для классов, имеющих другие базовые классы.
Макрокоманда IMPLEMENT_STREAMABLE_CLASS (objstrm.h)
Строит экземпляр класса TStreamableClass.
Макрокоманды IMPLEMENT_STREAMABLE_CTOR1..4 (objstrm.h)
Определяют конструктор, вызываемый функцией Build. В соответствующей макрокоманде должны перечисляться все базовые классы.
Макрокоманда IMPLEMENT_POINTER (objstrm.h)
Создает экземпляр операции извлечения указателя (>>).
Макрокоманда IMPLEMENT_CASTABLE (objstrm.h)
Устанавливает надежный по типу идентификатор с приведенным
типом.
Макрокоманды IMPLEMENT_CASTABLE1..5 (objstrm.h)
Реализуют код, поддерживающий надежный по типу механизм приведения типа.
Макрокоманда IMPLEMENT_STREAMER (objstrm.h)
Определяет конструктор Streamer.
Макрокоманды IMPLEMENT_ABSTRACT_STREAMABLE1..5 (objstrm.h)
Макрокоманда IMPLEMENT_STREAMABLE_FROM_BASE (objstrm.h)
Эта макрокоманда расширяется в IMPLEMENT_STREAMABLE_CLASS
(которая строит TStreamableClass), IMPLEMENT_STREAMABLE_CTOR1 и
IMPLEMENT_STREAMABLE_POINTER.
Назад | Содержание | Вперед
|
|