Г. Шилдт - Полный справочник по C++ (1109478), страница 119
Текст из файла (страница 119)
Зависимые функции: ипвеее() и е1едв(). Функция веЫа1е «1пс1ийе <1ояттеапз> чо1й яетяеаее(1оятаее <)акт) СОПят; Функция веевеаее<) является членом класса 1ов. Она устанавливает состояние соответствующего потока, описанное параметром Г)ар (см. раздел, посвященный функции тйвеаее()). Занисимые функции: с1еат() и тйвеаее().
Функция враг | В1пс1ийе <1ояттеазп> ветйпд ятт() сояззз иснй ятт <ятт1пд ат) з Функция вет < ) является членом классов ветапдветеазп, 1вет1пдветеат и овет1пдветеае. Первая версия функции нет<) возвращает объект класса вет1пд, в котором хранится текущее содержание строконого потока. Вторая версия удаляет из строкового потока текущую строку и заменяет ее строкой з. Зависимью функции: дее() и рве(). Функции в1ппяв1геа<п, Ыппяв1геагя и ов1ппяв$геап) Внпс1ийе ехр1тсне ехр1тсте ехр11с1е ехр1зсз.е ехр11сат ехр1з.сз.т Функции вет1пдветеюп(), 1вет1пдветеап() и овет1пдвегеазп() являются конструкторами классов вет1пдветеав, 1ветапдветевзп и овет1пдветеазп соопютственно.
Версии вет1пдветеав(), 1вет1пдветеаа<) и овст1пдвегеаа(), имеющие единственный параметр орепаойе, создают пустые потоки. Версии, имеющие параметр класса вет1пд, инициализируют строковые потоки. Рассмотрим пример, демонстрирующий применение строкового потока. Гу демонстрация строховъзх потоков. ()1пс1ийе <1оветеап> В1пс1пйе <яяегеазп> ия1пд паязеярасе яейз <пт гпа1п() ( яттнпдяттеаю я("Это †исходн строка.") /у Вводим строку.
ятттпд яег =- я.ятг<) сост « ятт « епй1з Глава 32. Стандартные классы ввода-вывода <яятгеапз> ветйпдяегеязп: ятгтпдяетеапзз тояз 1ятт1пдятгеапз зятт1пдястеагп 1ояз ояег1пуяттеазп оятгтпдяетеагп з.оя з ореп(1ояззореппзойе юоНе = з.ояз:нп ( 1ояззоиГ.) ореп(сопят ятт1пд аз(г, орепзпойе юойе = 1сяззтп ! з.ояззоце)з :ореп(1ояззорепеойе юаНе = 1оязззп); зореп(сопят ятттпд зо, орепзпойе злойе = з.ояззз.п); зореп(з.ояззорепзпойе юойе = 1ояззоце!з зореп(сопят яегнпд иг.
орепзпойе юоНе = 1ояззоиг); Выводим данные в строковый поток. в « "Числа: " « 10 « ' « 123.2; ьпс 1; с)оиЫе о; в>.вгс»1»д; сосд « вгг « " " « 1 « " " « г); теситп 0; ) Результаты работы азой программы приведены ниже, Это — искоднан строка. Числа: 10 123.2 Зависимая функция:век(). Функция ьупс ~ий ВЫо Кьпс1пде <ьовекеат> поо1 вудс амьен асс(о(ЬОо1 г)пс Функция вупс и1ЕП всд1оО является членом класса вов, унаследованным от класса хов Ъвве. Вызов функции вупс и1е)з веМоО позволяет безопасно использова~ь систему ввода-вывода языка С наряду с обьектно-ориентированной системой ввода-вывода, основанной на классах, Чтобы отключить синхронизацию с потоком веп1о, следует передать функции вудс идс)г всбдо() значение Ка1ве. Функция возвращает предыдущее значение: евое — если синхронизация установлена, и ва1ве — если нет.
По умолчанию стапдартныс потоки синхронизируются. Функция вупо е(ен веа1о() работает надежно, только если она вызвана до выполнения каких-либо операций ввода-вывода. Функции 1е119 и 1е1!р | М1пс1пг)е <ьовввеаи> ров сура ее11дО; ров суре ее11рО; Функция ее11дО является членом класса 1ветевв, а функция ее11р() принадлежит классу овекевв. Система ввода-вывода языка С++ управляет двумя указателями, ссылающимися на позиции внутри файла. Один из них является указателем еюда. Он ссылается на позицию, с которой начинается следующая операция ввода.
Другой указатель ссылается на позицию, с которой начинается следуюгдая операция вывода. Он называется указаглелем выюда. При выполнении очередной операции ввода-вывода соответствующий указатель последовательно продвигается вперед. С помощью функций ее11д() и ее11р() можно определи~ь текущее положение указателей ввода и вывода соответственно. Тип ров суре позволяет хранить наибольшее возможное значение, которое мажет возвращаться функциями ее11д() и ее11р(). значения, возвращаемые этими функциями, используются соответственно функциями вее)гдО и вее)гр().
Зависимые функции; вее)гдО и вее)ер(). Часть й(. Библиотека стандартных классов Функция нязе6 а(пс1п»)е «(овгсеап»> чс1») повеет(1»»»С(1пдв Яар»); Функция ппввее(> является»леном класса 1ов, унаследованным от класса 1ов )»ввв. Она сбрасывает один или несколько флагов форматирования, заданных параметром у7ад».
(Вес другис флаги»»г»»ор»»ру»отея.) Зависим ыс функции: вес с () н взвив ( ) . Функция и(ЫФ в» $1»тс1пс)в «) светелка> встеаа»втсе нас)»() попас» вьтеся»в(зе ж»пс)»(встеая»в1се и); Функция ъта»)еНО является членом класса 1ов, унаследованным от класса 1ов )»ввв.
Первая версия функции используется, чтобы определить тскушую шнргя»у поля вывода. Для того чтобы изменить ширину поля, следует вызвать второи вариант фуНКЦИИ »«1»)ЕН() Зависимыс функции: рввс1в1оп() и в111(). Функция)))(где В1пс1п»)е «1оветвая»> овстева» ьт»т1се(сопев с)»вт *ЬиХ, в» свая»в1ве»вап)» Функция ив1св() является членом класса овеввваь Она записывает ли»в байтов из входного потока в буфер ЬиЬ Функция возвращает ссылку на поток. Зависимые функции.' хва»з() и рве(). Глава 32. Стандартные классы ввода-вывода этой слане описываются контсйнсрныс классы, опрсдслснныс в библиотеке ЯТ1.. В Контейнеры предназначены для хранения других объектов. Они выделяют память, необходимую для хранения объекюв, и определяют механизм доступа к ним.
Таким образом, контейнеры представляют собой довольно сложное понятие. ~щгфуа~д Обзор библиогпеки Яг1 содержится е главе г4 Двунаправленный нтератор Прямой нтератор Итератор ввода Итератор вывода Итаратор произвольного доступа Взхгвг гогхсвг хохсвг очсхсвг яавдхсвг Унарныс прсдикаты относятся к типу ппргвб, а бинарныс — к типу вхпргвб. Аргументы бинарных прсдикатов всегда перечисляются по порядку: Ргзб зесоЫ.
В качестве аргументов как унарных, так и бинарных прсдикатов, должны использоваться лишь объекты, храняшисся в контейнере. Функции сравнения обозначаются термином сотзр. И сшс олно заме генис: если в описании сказано, что итсратор указывает на конем когпсйнсра, это значит, что итсратор установлен на объект, непосредственно следуюший за последним объектом контейнера. Контейнерные классы В библиотеке БТВ определены слсдуюшис контейнеры. Конте йжяг <Ьасввс> Ььс вес Набор битов. Двусторонняя очередь. Пннвннмй список Хранит пары ключ-значение, в которых каждому ключу соответствует лишь одно значение. Хранит пары ключ-значение, в которых каждому ключу может соответствовать несколько значений.
Множество, е которое каждый элемент может входить несколько раз. Очередь с приоритетами. Очередь. Множество, в которое каждый элемент входит лишь один раз. Стек. Динамический массив. <свече> <11вг> севов 1>вг в»ар> аш1ссвар вш1схввс <вар> <ввс> рсзо>ссу Ччввв ячв\лв <ччвчв> <аваев> <ввс> <всаох> <чвоеог> ввс всаса чвссог Каждый из конт.сйпсров будет описан в следующих разделах. Поскольку все контсинсры реализованы с помошыо шаблонных классов, они могут хранить данные любых типов, В описаниях эти типы представлены обобшснным типом т.
Часть 1Ч. Библиотека стандартных классов При описании контейнеров мы будем соблюлать слсдуюшис соглашения. Для ссылок на различные итсраторы использую~ся названия, перечисленные ниже. Угюминая типы итсразоров, использованные в описаниях шаблонов, мы будем придерживаться такой терминологии. Поскольку имена тинов данных. хранящихся я контсинсрс„произвольны, кошейнсрныс классы содержат оператор еурехтед, конкретизирую(цкй имена типов. Рассмотрим имена типов, используемых в контейнерных классах, еххе суре гевегепсе Некая разггоаидносг ь целочисленного типа.
Ссылка на элемент. Константная ссылка на элемент. разность между двумя адресами )(тератор. Кснстантныи итератор. Обратный итератор. Константный обратный итератор. Тип значения. хранящеюся в контеинере. Тип распределителя. Тип ключа. Тип функции, срааниеающеи два ключа. Тип функции.
срааниаающеи даа значения. указател~ Константный указатель Контейнер сопее гевегепсе ахввегеосе суре хсехасох сопве хеегаеог гечегее хеегахог сопас гегегае хсегасог чазов суре аззосасог суре )хеу суре Иеу соираге газов соххрахе рогаеег сопел роэпсег сопсаьгхех суре КЛЗСС Ь~1ВЕ1 Класс ьхевее выпол)гает операции нал наборами битов. Его ц)аблонная спецификация имеет слсду(ощий вил. )( еетр1асе <в1хе е йи с1авэ Ьхевее( Здесь параметр )т' задаст количсс(во битов в наборе. Класс Ьасвес имеет сяелуЮ- щис конструкторы. Ь1еаее()г Ь1ееее(цлахспег) 1опя Ьх.еа)г ехр1хс1е Ъхсвес(совах всг1лд аз, зхзе Е ( = О, в1зе е пин( = пров) Функция-член Описание Возвращает значегме схпе, если еьоывающии набор битов отстоит толыю хо единиц, в прзтиаьсм случае возвращает значение лазая; Везера(ивет количес.
ао единичных битов. Инаертируез все биты в вызывающем наборе и возвращает указатель *саха. Ьооз апу() сопвсг аьхе С сочах() сопасг ьвсвес<и> асзхр()з ьхсаес<иь ас1хр(архе с 1)г Инвертирует бит в г.й позиции вызывающего набора и возвращает указатель *сььа. Глава ЗЗ. Стандартные контейнерные классы Первый вариант консгрчкгара созласт пусгои набор битов, Второй вариант созласт набор битов, установлсю(ых в соответствии с параметром ()(Узт Трет((й конструктор создает набор битов, используя строку д (щчипая с позиции 1 Эта строка должна содержать только нули и ели(н(цы При установке битов гюпользуются либо пищ, либо т.вхае() — ( битов, в зависилюсти от того, юкос нз этих пюсл мснылс. Ко((станта пров представляет собон значение, достато л(о больное лля пио, пабы зэлать максимальную длину строки х В классе ьаевее определены операторы "«*' и "»".