Глава 13. Обзор потоков ввода-вывода___________________________311

МЫ функции write, ПО ОДНОЙ ДЛЯ аргументов const char*, const signed char*, const unsigned char* и целочисленного типа. Она посылает на вывод ряд любых символов (в том числе символ '\о') в количестве, задаваемом целочисленным аргументом. Это несколько отличается от

cout « "Сидела птичка на лугу";

где будет выведена строка ASCIIZ, но без завершающего ее нуля.

-?

Функции-члены класса isfream

Эти функции дополняют функцию потока ввода operator» и обеспечивают, по большей части, обратную функциям ostream функциональность. С помощью функций get и getline можно вводить строки текста определенной длины или строки, ограниченные разделителем. Одна форма функции get возвращает одиночный символ, вторая считывает символц в символьный буфер и третья вводит символы в буфер потока.

Если вы плохо знакомы или совсем незнакомы с перегрузкой функций, то они могут показаться вам странными. Как работает перегрузка функций, разъясняется в главе 15.

get. He станем обращать внимание на вариации, обусловленные конкретными символьными типами — нас интересуют более глубокие различия. Вот четыре различных объявления метода get:

// Форма 1: Используется совместно с cin, возвращает одиночный символ int get () ;

// Форма 2: Вводит символы в char в количестве len-1

// или до разделителя

istreams get( char*, int len, char = '\n');

// Форма З: Вводит одиночный символ и передает по ссылке char istreams get(chars);

// Форма 4: Читает символы в объект streambuf istream& get(streambuf&, char = '\n');

Во второй своей форме эта функция считывает с устройства ввода символы либо в количестве ien-l, либо до появления разделителя (по умолчанию это новая строка), вставляя в конце нуль, чтобы завершить строку. Наличие аргумента по умолчанию означает, что если это значение вам подходит, то передавать его нет необходимости. Следующий фрагмент иллюстрирует применение второй формы функции get:

char buf[128];

cin.get( buf, 128); // по умолчанию третий аргумент // имеет значение '\п'