На этом шаге мы закончим рассмотрение связи потоков с файлами. Все файловые классы унаследовали от базовых классов функцию close(), позволяющую очистить буфер потока, отсоединить поток от файла и закрыть файл. Функцию close() необходимо явно вызывать при изменении режимов работы с файловым потоком. Автоматически эта функция вызывается только при завершении программы. В качестве […]
Архив категории ‘Потоки ввода-вывода’
Работа с файлами


На этом шаге мы рассмотрим организацию связи файлов с потоками. Потоки для работы с файлами создаются как объекты следующих классов: ofstream - для вывода (записи) данных в файл; ifstream - для ввода (чтения) данных из файла; fstream - для чтения и для записи данных (двунаправленный обмен). Чтобы использовать эти классы, в текст […]
Использование строковых потоков


На этом шаге мы разберем примеры использования строковых потоков. Строковые потоки можно использовать по-разному. С их помощью в участок памяти, связанный со строковым потоком, можно заносить разнотипную информацию, затем извлекать ее по нужным правилам. Строковый поток можно в этом случае сделать внешним и с его помощью осуществлять межмодульный обмен. В следующей программе с […]
Двунаправленные строковые потоки


На этом шаге мы рассмотрим создание и использование двунаправленных строковых потоков. Основной конструктор строковых потоков, создаваемых как для чтения, так и для записи, имеет следующий формат: strstream имя_потока (char *buf, int lenBuf, int mode); где buf - указатель на участок памяти (буфер потока, обычно символьный массив), для которого создается поток; lenBuf - длина […]
Выходные строковые потоки


На этом шаге мы рассмотрим создание и использование выходных строковых потоков. Выходные строковые потоки обычно создаются с помощью такого конструктора класса ostrstream: ostrstream имя_потока(char *str, int len, int mode); Необязательное имя_потока - это идентификатор, произвольно выбираемый программистом. Указатель str должен адресовать уже существующий участок памяти. Параметр int len определяет размеры этого участка (буфера). […]
Безымянные входные строковые потоки


На этом шаге мы рассмотрим создание и использование безымянных строковых потоков. Конструктор класса istrstream позволяет создавать и связывать с заданной областью памяти безымянные входные строковые потоки. Например, чтение информации, переданной при запуске функции main() в командной строке, обеспечит следующая программа: //OOР14_1.СРР - безымянный входной строковый поток; чтение // данных с помощью операции извлечения […]
Входные строковые потоки


На этом шаге мы рассмотрим организацию и использование входных строковых потоков. Входные строковые потоки создаются с помощью такого конструктора класса istrstream: istrstream имя_потока(char *str); Обязательным параметром конструктора объектов класса istrstream является указатель str на уже существующий участок основной памяти. Например, следующие операторы char buf[40]; istrstream inBuf(buf); определят входной строковый поток с […]
Строковые потоки. Общие сведения


На этом шаге мы приведем общие сведения о строковых потоках. Классы istrstream, ostrstream, strstream, определяемые в заголовочном файле strstream.h (он в компиляторах под MS-DOS имеет более короткое название strstrea.h, так как длина имени файла в MS-DOS не может превышать 8 символов), предназначены в для создания потоков, связанных с участками (областями) основной памяти. Достаточно […]
Функции для обмена с потоками


На этом шаге мы рассмотрим дополнительные функции, используемые для обмена с потоками. Кроме операции включения (записи) в поток << и извлечения (чтения) из потока >>, в классах библиотеки ввода-вывода есть весьма полезные функции, обеспечивающие программиста альтернативными средствами для обмена с потоками. При выводе в качестве основного класса, формирующего выходные потоки, используется класс […]
Перегрузка операции ввода


На этом шаге мы рассмотрим перегрузку операции ввода. Для перегрузки (расширения действия) операции ввода >> необходимо определить операцию-функцию вида: istream& operator >> (istream& in, новый_тип& имя) { // Любые операторы для параметра нового типа. in >> ... // Ввод значений нового типа. return in; // Возврат ссылки на объект класса istream. } […]