ола, а при втором — только оди

Автор admin Пятница, 15 мая 2009 11:32

ола, а при втором — только один, хотя мы запрашивали два. Дело в том, что операторная функция operator»() использует пропуски как ограничители ввода (хотя с этим можно бороться, сбросив флаг skipws). Но при чтении чисел невозможно ограничить количество читаемых символов при помощи setw(). В случае потоков ввода функция setw() работает только при чтении строк. Создание манипуляторов В некоторых ситуациях бывает удобно создать собственный манипулятор. Оказывается, это делается на удивление просто. Манипулятор без аргументов (аналог endl) представляет собой простую функцию, которая получает и возвращает ссылку на ostream. Объявление endl выглядит так: ostream& endl(ostream&); После этого в выражениях наподобие следующего endl интерпретируется как адрес этой функции: cout « “howdy” « endl: Компилятор спрашивает: «Существует ли подходящая функция, в аргументе которой передается адрес функции?» Для этого в определены специальные функции, называемые аппликаторами. Аппликатор вызывает функцию, полученную в аргументе, и передает ей объект ostream в качестве аргумента. Чтобы создать собственный манипул


Комментарии закрыты.