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

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

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

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

0.4. Стандартные фасеты Стандартная библиотека предоставляет в заголовочном файле <1оса1е> следующие фасеты для локализации сйш1с (): 0.4. Стандартные фасеты 1027 =1 Стандартные фасеты (в локализации с(азз)с()) Назначение ' Фасеты Категория 50.4.1 со!гаге а съ сравнение строк 50 4.2 ~ полег(с ~ пптрилсг<СЬ> числовой ввод/вывод ' лит иег<СЬ> ) июи риг<СЬ> ввод/вывод денежных сумм ~ топеурилсг<СЬ> , топеурипсг< Сй,лис> 0 4.3 толегагу 0.44 ~ Глие ввод/вывод времени )~ Маге 1> З0.4.5 с1уре классификация символо извлечение сообщений Гтетаяеэ< Сй> ~ДО. 4 В этой таблице Сй означает сйаг или и сйаг 1.

Пользователь, которому требуется, чтобы стандартный ввод/вывод работал с другим символьным типом Х должен предоставить подходящие варианты фасетов для Х Например, может потребоваться стгесчи<Хсйаг,тйиаге 1> (9Р.4.6) для управления преобразованиями между Х и сйаг. 1'ип тйиаге гиспользуется для представления состояния сдвига в многобайтных кодировках символов 6Р.4.б); тьзгаге 1 опеределен в <сисйаг> и <исйаиь>.

эквивалентом п1йэиае гдля произвольного символьного типа Хявляется сйаг ггайз<Х>:: агате гуре. В заголовочном файле <1осаге> стандартная библиотека дополнительно представляет следующие фасеты: Стандартные фасеты ~ Категория Фасеты Назначение З0.4.1 ~ соИа1е со11аге Ьуиаию< Сй> сравнение строк з0.4.2 , ,'тииеыс иитрилсг Ьуиате <Сй> ввод/выводчисел тиляег< С,1и> пюи риг<С,Олг> З0.4.5 пюие1агу ввод/вывод денег пюиеурипсг Ьупате< Сй, 1пгегпайопаЬ Сй, Оиг> з0.4.4 З0.4.5 ' сгуре ~ классификация символов сгуре Ьулате<СЬ> з0.4.7 игеяаяеэ извлечение сообщений ~ тетаяеэ Ьулате <Сй> Приложение (3.

Локализация 1028 При конкретизации фасетов из данной таблицы Сй может быть сйаг или иейаг г, С может быть любым символьным типом (620.1). Параметр 1пгегпайопа1 может иметь значение ггпе или/айе; ггпе означает, что используется международное четырехснмвольное представление валютного знака (5Р.4.3.1). Тип тЬягаге !определен в <сисйаг> и <и сйаг.й>. Параметры 1п и Опг — это итераторы ввода и вывода, соответственно (519.1, 5!9.2.1). Придание фасетам с суффиксами рпг и аег этих параметров позволяет программисту реализовывать фасеты с прямым доступом к нестандартным буферам (9В.4.2.2). Буфера, ассоциированные с !аяггеат, являются буферами потоков, так что тип связанных с ними итераторов есть оя)геатЬпу !гегагог (519.2.6.1, 5Р.4.2.2).

Как следствие, для обработки ошибок доступна функция Га0ех1() 519.2.6.1). Фасет Г Ьупате является производным от фасета Г. Фасет Г Ьупазпе предоставляет такой же интерфейс, что и Г, за исключением того, что добавлен конструктор со строковым аргументом для задания имени локализации (см. ВР.4.1). Фасет Г Ьупате(пазпе) предоставляет соответствующую семантику для Г, определенную в 1оса1е (пате) . Идея заключается в том, чтобы извлечь версию стандартного фасета из именованной локализации (513.2.1) системной среды выполнения программы. Например: гоЫ ((гесгог<хгг(пе>ь г, сопл!!оса(еь 1ос) ( !оса1е Н (1ос, пею сойа(е Ьуяате<сйаг> ("да" ) ); !оса!е дй (41, пеи сгуре Ьуяате<сйаг> ("да" ) ) з гогх(г.Ьее!и(), и.еаза(),дй); ,У ..

) УУ сравнение датских строк УУ клоссиф-я датских символов 1оса1е дй [ "да" ); УУ читаем датскую лакал-ю !вюзючоя все фасеты) единожды У(а затем используем йх и его фосеты по необходимотяи гоИ/(гесгог<ягг(пя>ь г, сопя( (осо1еь 1ос) ( сопя! сойахе<сйаг>ь со1 = иве расе!<вайа!е<сйаг» (дй) з сопт сойаге<сйаг>ь схур = ихе (осе!<с(уре<сйаг» (х(й) г 1осо1е д! [1ос, со!); УУ сравнение датских строк !оса(е з!2(д),с(ур) з Усравнение датских строк и классификация датских символов Новый контекст локализации Ж будет пользоваться датскими текстовыми строками, но прежними умолчательными соглашениями по числам. Отметим, что поскольку умолчательное значение второго аргумента фасета есть О, то 1оса1е будет управлять временем жизни фасета, созданного операцией пею (50.3).

Подобно конструкторам класса 1оса1е со строковыми аргументами, конструкторы фасетов с суффиксом Ьупате осуществляют доступ к системной среде выполнения программы. Это означает, что они существенно медленнее конструкторов, которым не нужен такой доступ. Почти всегда быстрее сначала создать объект локализации, и лишь после этого выполнять доступ к его фасетам, чем пользоваться фасетами с суффиксом Ьупате во многих местах программы. Таким образом, хорошей идеей является однократное чтение фасета из системной среды с послелующим многократным использованием его копии во многих местах программы.

Например: 1029 0.4. Стандартные фасеты зог<(г. Ьея!п (), г.еп«(), «2) ,(< ... ) Понятие категории предоставляет более простой способ манипулирования стандартными фасетами в контекстах локализации. Например, располагая локализацией <!й, мы можем создать контекст локализации, в рамках которого строки читаются и сравниваются в соответствии с правилами датского языка (в котором есть три лишних гласных по сравнению с английским языком), а числа сохраняют синтаксис языка С++: <оса!в «й ия (<оса<е:: с!азз1с (), <<й, сойа<е ) стуре) < У датские буквы, обычпые висла Ниже при описании конкретных стандартных фасетов лаются дополнительные примеры их использования.

В частности, обсуждение сойа<е (51).4.1) проявляет многие структурные (архитектурные) аспекты фасетов. Обратите внимание на то, что стандартные фасеты часто зависят друг от друга. Например, пит ри< зависит от иитриис<. Чтобы успешно комбинировать и сопоставлять фасеты, а также создавать новые стандартные фасеты, вы должны хорошо знать их индивидуальные свойства. Другими словами, за исключением простых операций, рассмотренных в 521.7, механизмы контекстов локализации не предназначены для их непосредственного использования новичками. Разработка конкретного фасета весьма трудоемка.

Отчасти причина заключается в том, что конкретные национальные и культурные соглашения сами по себе весьма запутанные, а кроме того важно, чтобы средства стандартной библиотеки С++ были совместимы со средствами стандартной библиотеки языка С и со многими другими системными соглашениями и стандартами. Например, разработчику библиотеки было бы неразумно игнорировать средства локализации РОБ1Х. С другой стороны, среда, формируемая с помощью!оса!е и фасетов, весьма гибкая и общая. Можно сконструировать фасет для любых данных, а операции фасета позволят выполнять с этими данными любые специфические для них действия. Если фасет не будет слишком стеснен существующими соглашениями, то его дизайн и реализация могут быть простыми и ясными Я<<.3.2).

0.4.1. Сравнение строк Стандартный фасет со1!а(е обеспечивает сравнение массивов символов типа СЬ: <етрйие<с1ат Сй> с1ат яЫ:: сойа<е: риЬйс !оса!е:: <осе< риЫ1с: <уре«е!' Сй сйиг <уре< <уре<<е< Ьая(с я<г<па<СЬ> за<по <уре< ехрйсй сойа<е (з!ге < г = 0) < <и< сотраге (соля< Сй* Ь, сопя< Сй* е, соли Сй* Ь2, сопя< Сй* е2) соля< (ге<игл «о сотраге(Ь,е,Ь2,е2) < ) !еле йазй (сопз< Сй* Ь, сопя< Сй* е) сопя< (ге<игл <<о йаяй (Ь,е); ) ийпй 0ре <гапя<огт (сопя< Сй* Ь, сопя< Сй* е) своз< ( гетгп <<о <галя(огт (Ь, е) < ) зоэо Приложение Р. Локализация <<обе !оса!е::ЫЫ; Иобъект идентификации фасета ДР.2, 1Р.3, ИР.3.!! реп<ее<в«: -еоИа<е () И внимание: рго<ес<ед деструктор г!го<а! Ы«<о еотраге(сопи СЬ* Ь, сопя СЬ* е, сопя СЬ* Ь2, сопл< СЬ* е2) сопз« и<к<ив! з<г!па <уре «о <гапз1огт (сопи СЬ* Ь, сопя СЬ* е) сопи< г<г<иа! 1опа <<о Ьазв (сопл< СЬ* Ь, сопл< СЬ* е) сопи; Как и любые фасеты, соИа<е наследуется от 1асе< и предоставляет конструктор с аргументом, указывающим, отвечает ли класс йеа1е за время жизни фасета (9Э.З).

Обратите внимание на то, что деструктор объявляется в секции рго<ес<е<1. Фасет еоИа<е не предназначен для непосредственного использования, а служит базовым классом для наследования от него конкретных классов сравнения строк под управлением 1оса!е (з<л.З). В рамках интерфейса еоИа<е прикладные программисты и разработчики библиотек могут писать свои собственные фасеты сравнения строк. Функция сотраге() выполняет базовую операцию сравнения строк в рамках правил, установленных для конкретного соИа<е; она возвращает 1, если первая строка лексикографически больше второй; возвращает О, если строки идентичны, и возвращает — 1 в случае, когда вторая строка больше первой. Например: ио!«1(сопл< з<г!паз з1, сопл< з<ппяь з2, еоИа<екеваг>З стр) ( сопз< сваг* сз! = <1 . «а<а (); УУ поскольку сотраге(! работает с сдпг(] сопл< сьаг' сз2 = з2.

«а<а (); зийсЬ (стр.сотраге(сз1, сз1мз1.язв(), сз2, сз2чз2.язв() ) ( сазе 0: УУ ... Ьгеа!« сазе -1: Уз! < з2 У... Ьгеав< сазе 1: !Уз! > <2 У... Ьгеая< УУ строки идентичны согласно стр Обратите внимание, что функции-члены соИа<е сравнивают массивы элементов типа СЬ, а не строки Ьаз(с зМпя или С-строки с терминальным нулем. В частности, числовое значение 0 для СЬ воспринимается как обычный символ, а не как терминальный нуль. Кроме того, сотраге() отличается от игстр() тем, что возвращает именно 1, 0 и — 1, а не нуль и произвольные положительные и отрицательные значения 520.4.1). Стандартный библиотечный тип з<г<пя не чувствителен к локализациям — он выполняет сравнение строк по правилам для набора символов реализации (5С.2). Более того, стандартный тип за 1пя не позволяет непосредственно задать критерий сравнения (глава 20).

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

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

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

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