Глава 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); // по умолчанию третий аргумент // имеет значение '\п'