Архив категории ‘Потоки ввода-вывода’

Работа с файлами (окончание)

    На этом шаге мы закончим рассмотрение связи потоков с файлами.     Все файловые классы унаследовали от базовых классов функцию 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. }     […]