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

Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 144

Файл №1160791 Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004) 144 страницаБ. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791) страница 1442019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Вызов аяя!уп (я, и, х) при помощи акк!уп (я[1), х) присваивает и копий х строке я. Функция сотраге () использует для сравнения символов 11 () и ед (). Она возвращает сп1, причем 0 означает точное совпадение, отрицательное число означает, что Глава 20. Строки 648 первый аргумент стоит лексикографически до второго, а положительное — что после. Такое использование возвращаемого значения аналогично функции и!гетр (! из стандартной библиотеки С Я 20.4.1). Функции, связанные с вводом/выводом, используются в реализации низкоуровневого ввода/вывода (6 21.6А). Расширенный символ (символ из расширенного набора) — то есть объект типа шсйаг 1(6 4.3) — похож на сйаг, по занимает два байта или больше.

Свойства шсйаг 1 описывает сЬаг 1пи1я<тсйаг 1>; 1етр!а1е<> и1гис1 сЬаг 1га11и<госЬаг и> ( 1урес!еУгосЬаг 1 сЬаг 1уре; 1уреде1' иипг 1!п1 1уре; 1уре<!ев" вггеатоДоД гуре; 1урес!е~ши1геатрои рои гуре; Д пододпо сЬог 1тйя<сЬаг> ); Тип шсйаг 1, как правило, используется для хранения символов из 16-разрядного набора — например, [Лисоде.

20.3. ТИП Ь861С 61Г1ПЦ Стандартные библиотечные возможности работы со строками базируются на шаблоне Ьаи!и и1г!пд, который предоставляет типы членов и операции, схожие с теми, что обеспечиваются стандартными контейнерами (8 16.3.1): 1етр1аге<с!авв СЬ, с!авв Тг = сЬа г 1га11в СЬ>, с!аии А = а!!оса1ог<СЬ» с!аии игдсЬаягс иЬ1пу( риЬ!!а Этот шаблон и все связанные с ним средства определены в пространстве илген и1с(и представлены заголовочным файлом <и1г!пу>.

Два определения типов обеспечивают для обычных строковых типов общепринятые имена: 1уреде~Ьавгс иптпу<сЬаг> вгггпд, гуредеУ Ьаягс и1ггпу<шсЬаг и гоигг!пу,. Тип Ьая!и и(г!пдпохож на пес!юг(6 16 3), за исключением того, что баас и1г!пу'вместо набора операций со списками, который предлагает иес1ог, обеспечивает некоторые типовые операции со строками, такие как поиск подстрок. Многие обычные применения строк лучше обслуживаются теми реализациями, которые минимизируют копирование, не используют свободной памяти для коротких строк, позволяют просто модифицировать более длинные строки и т. и.

(см. 6 20.6112]). Болыпое число функций для работы со строками отражает важность манипуляций со строками, а также тот факт, что некоторые машины предоставляют специальные аппаратные инструкции, связанные со строками. Такие инструкции разработчик библитеки может использовать особенно эффективно, если их смысл близок функциям из стандартной библиотеки.

Как и другис стандартные библиотечные типы, Ьая!с и1г!пу<7ь является конкретным типом (6 2.5.3, Я' 10.3) без виртуальных функций. Бго можно использовать 649 20.3. Тип Ьаз~с з1ппц в качестве члена при проектировании классов для более изощренного манипулиро- вания текстами, но он не предназначен для того, чтобы служить базовым для произ- водных классов (6 25.2.1; см. также 0 20.6(10]). 20.3.1.

Типы Подобно оес(ог, Ьая(с з(г(ау делает свои родственные типы доступными через набор имен типов членов: гетр!аге<с!аяя СЬ, с!аяя Тг = сЬаг 1га!1в<СЬ>, с!аяя А = а!!осагог СЬ» с!авв Ьавгс ягг!пу( риЬйс: //типа (очень похожена оес1ог, УМ и т. пн ф !6.3)ь // специ4ично для Ьакгс к(г!ььу 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ог> геоегяе 11ега1ог; 1урейе/я1д: геоегке Иега1ог<сап<1 !1ега1ол соая1 геоегзе !1ега1ог; Понятие Ьая!с к(г!пдв добавление к простому Ьав(с к1г!ад<сбое>, известному как я1г!пд, полдерживает строки с разнообразными символами.

Например; 1урейе(Ьав1с к(г(ау<пав!дней сдат ЕУвгг!пд; вггис1 /сдпг( /* ... "/ ); // тип японских букв 1урейе/Ьавгс кгггпуч3сдаг> Лв1г!птр Строками из таких символов можно пользоваться точно также, как строками из сйап пока зто позволяет семантика символов. Например: // и. 3 20.33 ! // см.ф 20.3.4 (!вптпу Ягк1 тогд (Ув1ггпуй ия( ( (!кгг!пд" я!ке 1уре роя = икрой (' '); ге1игп с!в!ггпу (ия, О, ров) йяптпуЯгя1 коогй(Тк1г!пуй!к( ( йя1г!пуск!яе 1уре рок = !я/ьпд (' '(, ге1игп Лв(гьпу ~ия, О, рок( //см.

ЗК 20.3.1! Осм.у 20.г.у Глава 20. Строки 650 Естественно, также можно пользоваться шаблонами, принимающими строки в каче- стве аргумента; 1етр!а1е<с!авз Я> 8 йгяг вогй(53 я) ( 1урепате$сиее 1урероя=я,Гтй(' ); ге!игл Я (з, О, роя); ) // слс. ~ 20.3. ! ! // слеф 20.3.4 20.3.2. Итераторы Как и другие контейнеры, я1г!пд предоставляет итераторы для обычных и обратных итераций; 1етр!а1е«с!аяв СЬ, с!аяя 2г= сбаг 1га!!з<СЬ>, с!лвя А = а!!оса!ог«СЬ» с!авя Ьав!с згг!пу( риб!!а //".

0 итераторы (так псе как оес1ог, уя1 и т ля 3" !6.3.2): !1ега1ог беу!п (); сопя1 !'1ега1ог Ьеу!и () солз1; !1егагогепй(); сопя1 Нега 1ог епй () сопя1; геоегяе Пега!ог гЬеу!п (); сопв1 геоегяе Пега1ог гбеу!и () сопя1; геоегяе Пега1ог гепй () сопя! гелегве !1ега1оггепй() соля!; //- ); Поскольку в!г!лз'имеет типы членов и функции, требующиеся для получения ите- раторов, строки можно использовать со стандартными алгоритмами (глава 18). На- пример: оо!йЯягггпдй з) ( ятьйлдс !гега !ог р=)!ай (з.

Ьеу1л (), з елй (), 'а ); ) Наиболее часто используемые операции над строками обеспечиваются непосредственно самим з!г!пп. Надеюсь эти версии будут оптимизированы для строк помимо общей оптимизации универсальных алгоритмов. Стандартные алгоритмы (глава 18) не так полезны для строк, как можно было бы подумать. Универсальные ачгорлп мы имеют тенденцию считать, что элементы контейнера значимы и сами по себе, в изоляции. Как правило, для строк зто не так. Значение строки закодировано в точном соблюдении последовательности се символов, Поэтому Ьазгс я!г!пу«Сл> может содержать любой символ из набора СЬ.

В частности, я!г!пд может содержать 0 (ноль). «Символьный» тип СЬ обязан вести себя подобно настоя- гцны символам. В частности, он не может содержать определяемые пользователем ко- пирующий конструктор, деструктор или оператор копирующего присваивания. 651 20.3. Тип Ьаз(с я1ппд сортировка строки (то есть сортировка символов в строке) лишает ее смысла, в то время как сортировка универсального контейнера обычно делает его более полезным. Итераторы иЕг!лд не осуществляют проверку диапазона. 20.3.3. Доступ к элементам К отдельным символам в строке можно обратиться по индексу: 1етр!а ге<с)ияя СЬ, с!ияя Тг = сЬаг 1гштя<СЬ>, с!аияА=аИоса)ог<СЬ» сЕаяя Ьаи!с я1гтд( риЬЕЕс: 0-.

//доступ кзлелентаи !как для оегЕогг и" Еб.З.З) сопя! ге~егепсе орегагогГ] (гдяе 1уре л) сопя!; //обрагг!ение без лроверкгг ге/егепсе орега1огП (игее 1уре л); // обращение г вроверкод сопя! ге~егепсе ат(явте 1уре п) сопи!, геХегелсе аг(и!яе 1уре п); //-. ); При обращении за диапазон функция аЕ () сгенерирует исключение оиЕ оЕ галде. По сравнению с векторс>м, строкам не хватает операций / оаЕ () и ЬасЬ (). Чтобы обратиться к первому и последнему символам строки, мы должны написать соответственно и!ЕЕ] и я)я.ЕелдЕЬ ()-!].

Эквивалентность указателей и массивов Я 5.3) для строк я!пад не выполняется. Если я — зто строка и1плд, то йи[0] — не то же самое, что ж 20.3.4. Конструкторы Набор операций инициализации н копирования для строк во многом отличается от того, что реализовано для других контейнеров Ц 16.3А): Еетр!а1е<с!аяи СЬ, с1аяя Тг = сЬаг 1ганя<С)г, сЕаияА = аИосаЕог.СЬ» с!аяя Ьои!с я1ппу( риЫ>с; 0 ... //конструкторы и пр. Енелного лохоже на сесгоги Ьтдг у" !б.3.4) ехрусп Ьаис игг(лд (сопя!Ай а =А ()); Ьаи(с иге!ау(сопяЕЬпяс иЕгтуйя,явте 1урероя= О,я!ее 1уреп= прои, соля1Айп =А Я; 6аи!с игг!пу(сопя1СЬ* р, якие 1уре и = прои, соп>1 Лй и =Л Ш; ЬаиЕс и1ппд (соли! СЬ* р, сопи!Ай а = А ()), Ьигдс и1ппд(игяе 1уре л, СЬ с, сопя1Айа =А()); 1етр)а1е<с!аяя 1п>Ьагдс я!пад(1п Ьед!л, 1п елд, соля!Ай а = А ()); -Ьая!с я!пад() я1апс сопя1гдее 1уре прои; // лгоркер «все сггяволы > Строку и!пад можно инициализировать С-строкой, другой строкой иЕплд, подстрокой строки иЕг!адили последовательностью символов.

Однако ее нельзя инициализировать символом или числом; Глава 20. Строки 652 ооЫ/(сбаг'р, оес1ог сбаг»й о) ( ягг(па яд; ясг1пд з00 = "; // пушная строка // тоже пустая строка // ошибка: сбаг не преобразуется в я1г(па // ошибка; 1пС не преобразуется в я1ппе //ошибка; нет конструктора // с одним аргументол! гп // 7 копий 'а'; то еппь 'оаааааа ягпляя1 = 'а', ягг(ляя2 = 7; ягппд'яЗ (7); я6 (ля я4 (7, 'а'); ягг(ля я5 = "Фродо; я 1ппя яб = я5; ягг(па я 7(я5, 3, 2); я1ппяяд (р»7, 3) я1ппд яу (1л, 7, 3); // копия 'Фродо' //копия яб // ьб[З) и яб[4): то есть "до" //р[7), р[8) и р[У) //з1ппд(я1ппу(р), 7, 3), // возлюжно расточительно // копирование всех символов из о язппяя10 (о Ье81п (), о епд ()); ) оо1д/(яЫля я) ( шягг(па шя (я Ьеагп (), кепд ()); //- // копирование.

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

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

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

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