Главная » Просмотр файлов » Г. Шилтд - Самоучитель C++ (DJVU)

Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 37

Файл №1114955 Г. Шилтд - Самоучитель C++ (DJVU) (Г. Шилтд - Самоучитель C++ (DJVU)) 37 страницаГ. Шилтд - Самоучитель C++ (DJVU) (1114955) страница 372019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 37)

Нельзя вызвать функцию ве$ГО саму по себе. Другими словами, в С++ нет понятия глобального состояния формата. Каждый поток ввода/вывода поддерживает собственную информацию о состоянии формата. Вместо повторных вызовов функции ве$ГО в одном вызове можно установить сразу несколько флагов. Для объединения необходимых флагов используйте оператор ОК. Например, в следующем вызове функции ве!ХО для потока сои! устанавливаются флаги в!)овЬаве и !)ех; саче.веее(хов::впоиЬаве 1 Ьсв::Ьех); Поскольку флаги формата определяются внутри класса юз, доступ к ним должен осуществляться через класс юв и оператор расширения области видимости. Например, сам по себе флаг вИотЬаве задать нельзя, необходимо написать Гоа !:аЬоиЬаве. Дополнением ве(!!1 является функция шые0().

Эта функция-член класса юв сбрасывает один или несколько флагов формата. Здесь показана ее основная форма: чоЫ ипвееГ Отей.ада Флаки) Флаги, заданные параметром флаги, сбрасываются. (Все остальные флаги остаются без изменений.) Когда-нибудь вам понадобится только узнать текущее состояние флагов и при этом ничего не менять. Поскольку функции яеФГО и впве00 меняют состояние одного или более флагов, в класс )оз включена функция-член г)ар(), которая просто возвращает текущее состояние флагов формата. Здесь показан прототип этой функции: яп~еГ1вдв Юханов() Функция Пааво имеет и вторую форму, которая позволяет установить вгв, связанные с потоком ввода/вывода, флаги формата.

Флаги задаются в аргументе функции йаяз(). Здесь показан прототип этой версии функции: еюеез.ада Е1адв(цейхауз с) в47 Глава В. Введение в систему ввода/вывода С++ При использовании этой версии функции ЛаязО битовый шаблон ~" копируется в переменную для хранения связанных с потоком флагов формата; при этом перезаписывается весь предшествующий набор флагов.

Функция возвращает предыдущие установки флагов формата. 1. В этом примере показано, как установить несколько флагов формата. ()1пс1ис)е <1озВвезтл> пз)пв патпезрасе з~с); )и( тпа1п ( ) вывод с использованием установок по умолчанию соыс « 123.23 « " привет " « 100 « '~п'; сопС « 10 « ' ° « -10 « '~п'; сопс « 100.0 « '~п'; теперь меняем формат сои1,ппзе11(1оз::оес); 1/ требуется не для всех компиляторов сои1.зеСт(105."."пех ) 105.":зс1епт1т1с); соус « 123.23 « " привет " « 100 « 'Хп'; сост.. зет.1 (1оз: ." зйоироз ) ) сопС «10 « ' ' « -10 « '~п'; соШ .ее~1'(1оз.":зйомро1пТ ) 1оз::Е1хеб); сопк « 100.0; ле' нтп 0; После выполнения программы на экран выводится следующее: 123.23 привет 100 10 -10 100 .232300е+02 привет 64 а ггьгьььб -ь100.000000 Обратите внимание, что флаг в1))птуров влияет только на вывод десятичных значений.

Он не влияет на число 10, когда оно выводится в шестнадцатеричной системе счисления. Кроме того, отметьте, что вызов функции ппзейо приводит к сбросу установленного по умолчанию флага г)ес. Этот вызов нужен не для всех компиляторов, а только для некоторых, для которых уста- Самоучитель С++ 243 невка флага бес автоматически приводит к сбросу остальных флагов.

Поэтому после сброса флага бес необходимо заново установить флаг (тех или ос1. Как правило, для лучшей переносимости программ лучше установить только то основание системы счисления, которое вы будете использовать и стереть остальные. 2. В следующей программе показано действие флага иррегеазе. В первую очередь устанавливаются флаги вррегсаве, ЙовЬазе и йех.

Затем выводится число 88 в шестнадцатеричной системе счисления. В этом случае символ шестнадцатеричной системы счисления "Х" выводится в верхнем регистре. Далее с помощью функции ввзеЫО сбрасывается флаг вррегсазе и снова выводится шестнадцатеричное число 88. Теперь символ "х" оказывается в нижнем регистре. ()тпс1пг)е <1озеюеал> пвтпд патпеврасе згс(; тпбнаЫ ( ) ( сопв.ппзе~й (гоз::г)ес); соШ .зе~Г(1оз::иррегсазе ~ 1оз::звоиЬазе ~ 1оз::Ьех); сочв « 88 « 'М'~ сои~.ппзелг (доз :пррегсазе) сопв « 88 « 'М 1 гегигп О; 3. В следующей программе для вывода состояния флагов формата потока сои1 используется функция Па889. Обратите особое внимание на функцию зйовйарО.

Она может вам пригодиться при разработке собственных программ. ()1пс1псе <1озлюеап~> из1пя патпезрасе зтд; чоЫ аноним' адз (]; 1п( ватп ( ) отображение состояния флагов формата по умолчанию зпоиГ1адз О; сонг.зелт(1оз.":ос1 1 1оз:: зпоиЬазе 1 1оз::г1хеб); зЬоий1адз О; гетыгп О; Глава 8.

Введение в систему ввода/вывода С~~- I/ Зта функция вывопнт состояние флагов формата чофй зЬон11апз() 1оз:: йпШацз й; = соит..11ацз(); !/ получение установок флагов формата 1й(Г а 1оз::зкфрня) соиг « "в).фрнв установлен~п"; е1яе соис « ввКфрнв сброшен1,п"; И (Г ь 1ов::1егт) соиг « "1ейг установлен~и"; е1яе соиг « "1ейс сброшен1п"," Н (й а 1оз::гфцЬт) соиб « "гфдЬг установлен1п"; е1яе соис « "гфсЬс сброшенхп"; 1й(Е й фов::1пгегпа1) соиг « "фпсегпа1 установлении"; е1яе соиг « "1псегпа1 сброшенХп"; 1Е(Г й фоз::с(ес) соис « "бес установлен1п"; е1яе соиг « "бес сброшенуп"; 1):(1 й 1оз::осс) соиг « "осг установлен~и"; е1ве соис « "осе сброшенХп"; 1т(т й 1оз:сЬех) соиг « ббех установлен~я"; е1яе соис « "Ьех сброшен~и"; 1г(К й Хоз::з(тонЬаяе) соиб « "вЬонЬаве установлен1п"; е1ве соис « "вЬоыЬаяе сбоошенХп"; 1К(Г а 1оз::зЬонрофпт) соиг « "заонрофпс установлен'~п"; е1яе соиг « "вЬоырофпс сброшенХп"; 1й (й ы 1оз::вЬонроз) соис « "зйонроз установленЫ'' е1яе соис « "яЬоыров сброшенХп"; 1~(й е 1оз::иррегсазе) соис << "иррегсаяе установлен~п"; е1яе соис « "иррегсаве сброшен~п"; "' й (Г й фоз:: зсфепЬЛбфс) соиС « "всфепЫ1с установленЫ'; е1ве соис « "всфепбфйфс сброшенХп"; И (Е й фов::Гфхеб) соис « "Йфхей установлении"; е1ве сои(; « "йфхей сброшенХп"; Хг (г ж фоз;:ипфтЬиГ) соие « "ипфТЪиЕ установлен~и"; е1яе соиг « "ипфсЬий сброшен~п"; 1й(1 а 1оз::Ьоо1а1рЬа) соис « "Ьоо1а1рЛа установлен~п"; е1яе соис « "Ьоо1а1рба сброшен~и"; соис « Самоучитель Сч-+ В функции а!со!айат() объявляется локальная переменная Гтипа Гпййайа.

Если в вашем компиляторе тип данных йвСйар не определен, объявите переменную Гтипа!овя. Ниже показан результат выполнения программы: в)ссрнв установлен 1е г"С сброшен г)аЬс сброшен (псегпа! сброшен бес установлен ос( сброшен Ьех сброшен вЬонЬаае сброшен вЬонроапе сброшен еЬоиров сброшен иррегсаве сброшен вс(епС)Ссс сброшен Г)хес) сброшен ппссЬий сброшен Ьоо1а!рЬа сброшсн в)с(рв в установлен 1е ГС сброшен г)аЬс сброшен )псегпа) сброшен бес установлен ос! установлен Ьех сброшен вЬохчЬаве установлен вЬоюро(пс сброшен вЬохчрох сброшен пррегсаве сброшен вс)епС)С)с сброшен с)хек установлен пп)сЬиг сброшен Ьоо!а1рЬа сброшен 4.

В следующей программе проиллюстрирована работа второй версии функции йааво- Сначала, устанавливая флаги йотуроз, а)соиЬаяе, осС и г)аЫ, мы строим маску флагов. Затем с помощью функции йаявО для потока сов! маска связывается с переменной флагов. С помощью функции аЬоссйайа9 проверяется правильность установки флагов.

13то та же функция, которая использовалась в предыдущей программе.) $1пс1пс)е <1овегеав> песпд пагаеерасе вСс$! чей аЬонй1асв (); Глава В. Введение в систему вводаувывода С-н- (л( спаьп ( ) IУ отображение состояния флагов формата по умоляагвло ялоий1апя(); устанавливаются флаги я)1оироя, я)лом)саяе, ссс и г1д)т осталвыые сбрасываются 1оя::.ЕюЕГ1адя Š— 1оя::я)~оироя ) Ьоя::ябоибаяе ьоя:: ос" т 1оя::г1дЬЕ; соас.г1ачя(1]; уу установка флагов я)тоыГ1апя () ' геспгп О; 1.

Напишите программу, которая бы устанавливала флаги для потока соМ так, чтобы целые, если они положительны, выводились со знаком +. Покажите, что ваш набор флагов формата правилен. 2. Напишите программу, которая бы устанавливала флаги для потока соМ так, чтобы всегда при выводе дробных значений были показаны десятичные точки. Кроме этого, значения с плавающей точкой должны выводиться в научной нотации с символом "Е" в верхнем регистре. 3. Напишите программу, которая сохраняет текущее состояние флагов формата, устанавливает флаги вЬоиЬаяе и Ьех, выводит на экран значение 100, а затем возвращает флаги в исходное состояние.

8.3. Функции тЫМО, ргес~яопо и И!() Кроме флагов формата в классе )ов определены три функции-члена. Эти функции устанавливают следующие параметры формата: ширину поля, точность и символ заполнения. Этими функциями являются соответственно функции м4ЙЦ), ргесь1опО и ЙИО. По умолчанию при выводе любого значения оно занимает столько позиций, сколько символов выводится. Однако с помощью функции иЫгЬО можно задать минимальную ширину поля. Ниже показан прототип этой функции: яегеамаяе иЫюн(яеюеааяхяе и1 Ширина поля задается параметром и, а функция возвращает предыдущую ширину поля. Тип данных в1геашяге определен в заголовочном файле Самоучитель С++ 252 всгевтваге ргесвваоп 1всгеаиваге р); Точность (число выводимых цифр после запятой) задается параметром р, а возвращает функция прежнее значение точности.

По умолчанию, если требуется заполнить свободные поля, используются пробелы. Однако с помощью функции БИО можно изменить символ запол- нения. Ниже показан прототип функции ЙП(): спал 2111 (сваг сЫ; После вызова функции ЯН() символ сЬ становится новым символом запол- нения, а функция возвращает прежнее значение символа заполнения. 1. В этом примере показана программа, которая иллюстрирует работу функций формата: 41пс1п(е своя~левш> пятнам пап1еярасе япс); тпс йа1п () ( сопт ыьс(~Ь(10); // установка минимальной ширины поля << "Привет" «< ''~п'; /т по умоляанив выравнивание вправо Ш1('Ь'); // установка символа заполнения м1бГй(10); // установка ширины поля << "Привет" << 'Хп'; // по умоляанию выравнивание вправо веса(1оя;:1еГе); /! выравнивание влево ытс(ТЬ(10) ~ // установка ширины поля <с "Привет" << 'Хп'; // выравнивание влево сопл сопс соне сопл соне сопл сопя <1оатгеаш> как одна из форм целого.

В некоторых компиляторах при выполнении каждой операции вывода значение ширины поля возвращается к своему состоянию по умолчанию„поэтому перед каждой инструкцией вывода может понадобиться устанавливать минимальную ширину поля. После установки минимальной ширины поля, если выводимое значение требует поле, меньшее заданной ширины, остаток поля заполняется текущим символом заполнения (по умолчанию пробелом) так, чтобы была занята вся ширина поля. Однако запомните, если размер выводимого значения превосходит минимальную ширину поля, будет занято столько символов, сколько нужно.

Выводимое значение не усекается. По умолчанию при выводе значений с плавающей точкой точность равна шести цифрам. Однако с помощью функции ргееЫопО это число можно изменить. Ниже показан прототип функции ргее1аюпо: Глава 8. Введение в систему ввода/вывода бч+ сопв.иЫв)т(10)с // установка ши(лбы поля соцб.ркес1в1оп(10); // установка точности в 10 цифр сопс « 123.234567 сс ' М '; соцб,и1Ж)1(10) у // установка ширины поля соус.ркесавьоп(б); // установка точности в 6 цифр соцс « 123.234567 « 'Хп'; кеСцтп 0; После выполнения программы на экран выводится следующее: Привет ЪЪЪ|привет ПриветЪЪЪЪ 123.234567 123.235ЪЪЪ Обратите внимание, что ширина поля устанавливается перед каждой инструкцией вывода. 2.

Характеристики

Тип файла
DJVU-файл
Размер
8,22 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее