Главная » Просмотр файлов » Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)

Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033), страница 223

Файл №1004033 Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)) 223 страницаБьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033) страница 2232018-10-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Операция ввода использует г для того, чтобы решить, как установить состояние своего потока. Если ошибок не обнаружено, то считанное значение присваивается г; в противном случае переменная г остается неизменной. Класс зетгу (часовой) обеспечивает гарантию выполнения всех префиксных и постфиксных операций потока 621.3.В). В частности, применение зеп(гу гарантирует, что мы начинаем читать, лишь если поток находится в надлежашем для чтения состоянии.

Разработчик язв еат может написать следуюшее: 1етр!азе<с!азз СА, с!ат Тг> Ы1геать зЫ::Ьаяс Ы(геат<СЬ, Тг>:: орегазог» (г!оиЫеь Н) ( зеп1гу 8иага (*1Ыз) 1 У см. ~2!.3.8 (1(!81гагй) ге1игп *1ЬЫ! Ф все хорошо гоззаге яаге = О; (зягеатЬиу Вега(ог<СЬ> еозг 1(оиЫе бб; 0.4. Стандартные фасеты 1039 згу ( изе 1асез<пит Вез<СЬ» (Вейос() ) .Вез(*йи,еоз, *йи,мазе,й() (1(ззте==О ( ) тазе==ео1ЬЬ) И = й1; зеизазе (тазе); ) сазсЬ (... ) ( ЬапВ!е Ыехсерйоп (*йи); 77 см. ВР.4.2.2 ) гетгп *(Ьи; ) В случае ошибки функция зеаиазе() сгенерирует исключения, определеннгяе для 1ззгеат (в21.3.6). Определив иитриисз, такой как, например, Му риис! из Взз.4.2, мы можем читать с использованием нестандартной пунктуации. Например; »оЫ1() ( сот « "зб1еА: 1пз «1; ВоиЫе И) сиз » 11» В1; 77 читаем по стандартному формату "!2345б7В" 1оса)е !ос (1оса!е:: с)азз!с (), пет Му рипсп ' сиз .

ЬпЬие ( !ос); сои! « "зту1е В: "; зпз «2; ВоиЫе В2; с(п»!1» И; ) В читаем по формату "12 345 б7В" Чтобы читать по-настоящему необычные числовые форматы, нам нужно заместить Фо Веты. Например, мы могли бы определить иит Вез для чтения римских цифр вроде ХХ1 нли ММ (5)3.6[! 5[). 0.4.3. Ввод и вывод финансовой информации Форматирование количества денег технически аналогично форматированию «просто чисел» (93.4.2).

Однако представление денежных величин еще более чувствительно к национальным стандартам и особенностям. Например, отрицательные значения (убыток, дебет), таких как — 1.25, должно в некоторых контекстах представляться положительными числами, заключенными в круглые скобки: (1.25). Аналогично, в других контекстах могут применять цвет для наглядного отображения отрицательных сумм денег.

Нет никакого стандартного «денежного типа». Вместо этого предполагается, что программист явным образом применит «денежные фасеты» к числовым величинам, про которые он знает, что они соответствуют денежным суммам. Например: 1040 Приложение (). Локализация с1ат Мопеу ( 1опя 1лГ атоип(Г ри611с: Мопеу()олл(пг«): атоипг(г) () орегагог 1оле 1пг () солт ( гегигл атоипм ) 77... гоЫ3'(1опл (лг г') ( сот « "га1ие= " «г' « "атолл~= " «Мопеу(1) «еп41) Денежные фасеты призваны упростить написание операции вывода для Мопсу, которая выводила бы денежные суммы в соответствии с национальными особенностями (соглашениями) (ВО.4.3.2). Результат вывода будет зависеть от того, какой 1оса1е закреплен за сои(. Вот возможные варианты форматов вывода: га1ие= 1234567 атолл(= З12345. 67 га(ие= 1234567 отоипт 12345, 6 7 1)КК га1ие= — 1234567 атоипг= З-12345.

67 га(ие= -1234567 атоипг= -З12345.67 га(ие= -1234567 атоипт ( СНГ12345, 67) Для денежных сумм считается важным учет, по возможности, самых малых монет. Поэтому я принял соглашение о представлении целым значением количества центов (пенсов, центов, копеек и т.д.), а не долларов (фунтов, евро, рублей и т.д.). Это соглашение поддерживается посредством функции угас йК(в () фасета тоиеурилсг (Вьг.4.3.1). Вид «десятичной точки» определяется при помощи Нес)- та1 ро1игО. Фасеты тоиеулег и тоиеу риг предоставляют функции, которые выполняют ввод/вывод на основе формата, определяемого фасетом толеу Ьазе.

Наш простой тип Моиеу может использоваться для управления форматами ввода/вывода или хранения денежных величин. В первом случае мы приводим к типу Моиеу иные типы, хранящие денежные суммы, непосредственно перед их записью, и читаем в переменные типа Моиеу перед их конвертированием в другие типы. Во втором случае мы исходно храним денежные суммы в переменных типа Молеу, что менее чревато ошибками, ибо нет необходимости выполнять преобразования при записи в потоки, и не надо преобразовывать прочитанные данные к форматам, учитывающим национальные особенности.

Но, к сожалению, не всегда можно внедрить тип Моиеу глубоко в программы, которые не разрабатывались с этой целью. Остается выполнять преобразования к типу Моиеу в операциях ввода/вывода. 0.4.3.1. Пунктуация денежных величин Фасет тоиеуриисг, управляющий представлением денежных величин, похож, естественно, на фасет питриисг, управляющий представлением «обычных чисел» (в)3.4.2.1): 3О4З 0.4. Стандартные фасеты с1ат яЫ:: толеу Ьаяе ( риЬ|с: елит рог< ( лоле, <расе, яутЬо1, я<ли, га<ие ); я<гис<раиегп ( сйаг!)еЫ [4] 1 ) 1 // части раскладки значения /У спецификация раскладки <етр<а<есс<аяя Сй, Ьоо! !п<егла<(опа1 = (а!яе> с<аяя я<д<: топеурипс<: риЫк <оса<е<:уасе<, риЫк топеу Ьаяе ( риЫ<с: <уре«е!' Сй сйаг <уре< <уре«еу Ьая(с я<гтл<СЬ> я<г!пл <уре< екр<1сй топеурипс<[я!яе 1 г = О); Сй «есйпа! ро<п<() сопя1; Сй <йоияапдя яер() соля<1 я<г!пе Кгоиртр () сопя<; /У '.

' в с!аи!с() // ', ' в с1аямс() // "" в с!аяяс() - означает "нет группировки" яМлл <уре сигг яутбо< () сопя<; я<г!пд 1уре роя!<!ге я<ли () солИ; я<г!пл <уре пела<!ые Ятп () соля<1 У "5" в с1аямс() // "" в с1аямсО /У "-" в с!аяя(с() // число цифр после десятичной точки; 2 в с1аяядс() <и<Як «!К!ь () сопя<1 У (яутЬо1, я<ел, попе, га!ие ) в с!аяяк() /У(яутбо1, я<оп, попе, га!ие ) в с!аямс() раиегп роя [огта< () сопя<1 раиегп пед (огта< () сопя<1 я<а<к сопя< Ьоо< тн = 1п<егпабопа!1 // применяем международ. денеж. форматы /'обьект идентификации фасета (яР.2, яР.З,ЗР.З.)) я<а«с <оса!в:: Ы Ы< рго<ес<е«: -толеурилс< () 1 //виртуальные ч!о "-функции (см. ЗР.4.!) )1 "(/И)" "ВКК" "Е(/1<" Последним символом является терминальный нуль.

Стандарт [Ю-42[7 определяет трехбуквенные идентификаторы валют. Когда Зп<егпаиопа! равен уа!яе, можно использовать локальные обозначения валют, вроде Ю и т.д. Средства, которые предлагает фасет топеурипс<, предназначены, в первую очередь, для разработчиков реализаций фасетов топеу ри< и топеу ко< 5[3.4.3.2, 50.4.3.3). Функции-члены <!ес(та1 роли[), <йоияап<1я яер() и Кгоир!пК() ведут себя так же, как их эквиваленты из питрипс<. Функции-члены сиге яутЬо1[), роипге я[Кп() и пеКайге я[Ки() возврашают строку, изображаюшую валюту [например, Ж, РМГ, РКК и т.д.), плюсовой знак и минусовой знак, соответственно. Если аргумент Зи<егпапоиа! шаблона равен <гие, то член 1п<! также будет равен иие, что повлечет за собой использование международных обозначений валютных символов.

Такие международные обозначения являются четырехсимвольными строками. Например: то42 Приложение О. Локализация Объект типа рапегп, возвращаемый функциями роз/опиа<() или иек /огта<(), состоит из четырех частей, определяюших последовательность, в которой отображаются числовое значение, валютный символ, символ знака (плюс или минус) и заполнители (пробельные символы). Наиболее общие форматы задаются тривиально с применением этого простого образца (рапегп) формата.

Например: Представление отрицательных значений с использованием скобок достигается, когда возврат функции пеяайые и!Кп() содержит пару символов (). Первый символ этой строки помешается туда, где часть я!ап располагается в образце, а остальная часть строки — после всех остальных частей образца. Наиболее распространенным применением этого средства является принятое в финансовых кругах заключение отрицательных денежных сумм в круглые скобки, но возможны и иные варианты применения. Например: -З123.45 УУ(я(епяутЬо!ыа!иелопе/ где пека!<ые я(ел() возвращает "-" * $123. 45 я!!!у У (я!еп,яутЬо1, ыа!ие,попе/ где лева<!ые я!япо возвращает "* я!!у" Каждое из значений я!ап, ыа1ие и яутйо! должно появиться в образце ровно один раз. Оставшееся значение может быть ирисе или попе.

В том месте, где в образце расположен зрасе, в отображаемом значении может появиться один или более пробельных символов. А где расположен попе (но не в конце образца) — там может быть нуль или более пробельных символов. Обратите внимание на то, что эти строгие правила запрешают такие на первый взгляд разумные образцы, как раиегп ра< = (я10л, ыа<ие, попе, попе ) ! УУ еп оп нету яутЬо( Функция угас <(!К!<з () указывает, где помещается <!ес!та! ро!и<(), Часто денежные суммы представляются в самых мелких валютных единицах (В<>.4.3).

Такая единица обычно в сто раз меньше основной валютной единицы (доллара, фунта, рубля и т.д.), и поэтому угас <5!а!<з() чаще всего возврашает 2. Приведем пример простого формата, оформленного в виде фасета: с1аия Му топеу 1о: риЫ1с топеурипс«сваг, <гие> ( риЫ!с: ехрдсПМу топеу (о(я(яе < г = О): топеурипс«сваг,<гие> (г) ( ) сваг 1уре 4о 4ес<та< ро<п! () сопя! (ге<игл ' .

'; ) сваг <уре 4о <Ьоияапдя иер() сот! (ге1игп ', '; ) яппя 4о Кгоир(ля() сот< (ге<игл "'~003~003',003" ! ) затая <уре до сигг яутьо<() сопя( (ге<игл "ЮЯР" ! ) я<пни <уре Ио роз<<<ге я<дл () сот< (ге<игл ""; ) я<пня <уре 4о ледовые я(дп () сот< (ге<игл " () "; ) е$123.45 зе123. 45 З123.45 $123. 45- -123. 45 РКК (З123.45) (123. 45РКК) У (я!еп, яутЬо1, гросс, ыа!ие/ где роя<гас я!еп() возвращает "+" У ( яутЬо!, я(ел, ыа!ие, лопе,) где роя«ые я!епо возвращает ие " УУ (яутЬо1, я!ел, ыа!ие, попе,) где роядые я!епр возвращает "" УУ ( иутЬо1, ыа!ие, я(ел, попе/ У(я!яп, ыа1ие, ирисе, яутЬо1/ У (я!ел, зутЬо!, ыа1ие, попе/ где пело«ые я!еп() возвращает "()" У(я!еп, ыа1ие, яутЬо1, лопе/ где леха<гас я!Кло возвращает "()" ().4.

Стандартные фасеты 1043 тг гго !гас гг!я!гз () сопя! (гегигп 2; ) уу две цифры после десятичной точки рапегп гго роз )огтаг() сопя! ( зтйсраиеги раг = (з!еп,зутЬо1, га!ие, попе) г ге!игл рагг ) рапегп гго иее 1огтаг() соля! ( згаяс раиегп раг = (з!ап, зутЬо1, га!ие, иоле) г ге!игл рагг ) )г Этот фасет используется в операциях ввода/вывода Мопеу, определенных в ~Р.4.3.2 и ~Р.4.3.3. Для пюпеурцпс( имеется и версия с суффиксом Ьупате (5Р.4, 5Р.4.1): гетр!аге<сгазз СЬ, Ьоо!!пг! = уагзе> с!азз зЫ::топеуринсг Ьулате: риЬВс толеурипсг<СЬ,)пг!> ()*...

*) ) г (з.4.3.2. Вывод денежных величин Фасет топеу риг записывает денежные суммы в соответствии с форматом, заданным птопеурцпс(. Более точно, топеу риг предоставляет функции риг(), которые помещают надлежац(им образом отформатированное представление символов в буфер потока: гетр!иге<с!азз СЬ, с1азз Огп = озггеатЬиг Ьегагог<СЬ» с!азз зиг:: тоиеуриг: риЫ!с госаге г:1асег ( риЫ!с: гуреде)' СЬ сЬаг гурег гурегге) Оиг Ьег гуре! гуреггеу'Ьазгс згг!ле<СЬ> згггпа гуре; ехрясв тоиеу риг (тге г г = 0) г У поместить значение на«в позицию буфера "Ь": Оигриг(Оиг Ь, Ьоог !игг, !оз Ьазеа з, СЬ11!1, 1оие ггоиЫе г) солзг; Отри!(ОигЬ, Ьоо! !пг1, !оз Ьазеа з, СЬ)!!1, сопят ягма (урез г) сопя!; згабс !оса!е::ЫЫг Угобъект идентификации фасета (ЗО2, з«>3, зь) 3!) ргогесгегг: -тоиеу риг() г У виртуальные луо "-функции (см.

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

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

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

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