Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 102

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 102 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 1022019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

С помощью функции егаве() можно удалить символы из строки. Один из ее вариантов выглядит следующим образом. й ясхзпд ьехаяе(яьае суре пап = О, ятае суре ззит = проя) з Зта функция улаляет лиаз символов из вызывающего объекта, начиная с позиции, заданной параметром т/аг/. Функции зпвегс ( ), атаев () и хер1 все ( ) иллюстрируются следующей программой. // Демонстрация функций Ьпяехс(], ехаяе() и тер1асе(] ()1пс1из)е <Ьоястеаи> (]1пс1ие)е <ятх1пд> пяьпд пакзеярасе яМз Ьпс яза1п() ( ясхьпд ясх1("Бсхьпд )запз)11пд с++ясу1е.")з яттзпд ятт2("Роиех ЯТЬ.")з сопт « "Начальные строкиз 1п"з сопс « "яст1з " « ясх1 « епс)1з сопя « "яст2.

"" « ясх2 « " 1п1п"з // Демонстрация функции Ьпяегс(). сопС « "Вставляем строку яСХ2 в строку ятх1з 1п"з ясх1.зпяехс(б, ясх2]; сост «ятт1 « "1п1п" з // Демонстрация функции ехаяе(). соус « "удаляем 9 символов из строки ясх1з1п"з яст1.етаяе(б, 9)з соус «ясх1 «''зпзп" з // Демонстрация функции тер1асе. Глава 24. Введение в стандартную библиотеку шаблонов сонг « "заменяем 8 символов строки ягг1 строкой всг2:)и"> ясг1.гер1асе(т, 8, ягг2); сонг « ягг1 « еда1; гесцгп О; Результаты работы этой программы приведены ниже.

Исходные строки: ягг1: яггьпд Напс)11пд С++ ягу1е. ясг2: Роиег ЯТГ Вставляем строку ясг2 в строку ясг1: ясг1пдяТЪ Роиег )запН11пд С++ ясу1е. Удаляем 9 символов из строки ягг1: Ясг1пд )запс)11пд С++ вгу1е. Заменяем В символов в строке ягг1 строкой ягг2: яггъпд ЗТВ Роыег Напп11пд С++ ясу1е. Поиск символа в строке Класс вег1пд содержит Неекопько фУнкций-членов, предназначенных Лля поиска подстрок, в частности функции 11по() и гг1п(((). Их прототипы приведены ниже. 1 я1ге гуре 11пг)(сопят всгьпд ьзмоЬ, яьге суре вин=о) сопев; вьве суре г11пд(сопев ясгзпд ьзвпЬ, яьге суре пап=пров) сопев; Начиная с позиции, заданной параметром згаг(, функция 11пп() выполняет поиск первого вхожления строки„содержащейся в объекте зггяЬ. Если подстрока найдена, функция 81п6() возврашает индекс се первого символа в вызываюшем объекте.

Если подстрока нс найдена, возврашается константа пров. Функция гг1пд() является противоположностью функции 11пд(). Начиная с позиции, заданной параметром згагг, функция гя1гк)() выполняет поиск послелнего вхожления строки, содсржашейся в объекте зьоЬ. Если полстрока найдена, функция гг1пп() возвраШает итшскс ее последнего вхождения в вызываюШий объект. Если подстрока не найдена, возврашается константа пров. Рассмотрим короткий пример.

в котором используются функции 81пе() и г81пп(). ()1пс1цде <1ояггеат> $1пс1цде <вгггпд> ця1пд паиеярасе всс); 1пг таьп() ( 1пС 1; ясгупд я1 "Чистые руки, горячее сердце, холодная голова"; ягг1пд я2; 1 = в1.11пс)( Чистые" ); г1(1!=ясгупд::пров) ( соцс « "Найдено соответствие в позиции " « 1 « епс)1; Часть П. Язых С++ соцп « "оставшаяся часть строкиз'зп"з я2.аяятдп(я1, з, я1.яз.зе())з сосо « я2з соцс « "1п'зп"; 1 = я1.11пб("горячее")з 11(1!--ясг1пдззпроя) ( соцо « "Найдено соответствие в позиции " « 1 « епс)1з соцо « "Оставшаяся часть строкз<з'зп"з я2.авя1дп(я1, з., я1.яз.те())з соцс « я2; соцс « "тптп"з ).

= я1 11пй("холодная"]з зт(1з=ясг(гдззпроя) сонг « "Найдено соответствие в позиции " « з « епс)1з соцг « "Оставшаяся часть строкиз'зп"з я2.аяя1дп(я1, з.. з1.язве())з соцп « я2з соцт « увптп"з /т находим последнюю запятую. з. = я1.г11пс((", "); 11(1!=ясг1пдззпроя) ( соьс « "Найдено соответствие в позиции " « 1 « епс)1з соцс « "Оставшаяся часть строкиз'зп"з я2.аяв1дп(я1, 1, я1.я1те())з соцд « Я2з тегцгп Оз Результат работы программы показан ниже. Найдено соответствие в познцииз О Оставшаяся часть строкиз Чистые руки, горячее сердце, холодная голова Найдено соответствие в позишзиз 13 Оставшаяся часть строки: горячее сердце, холодная голова Найдено соответствие в позицииз 29 Оставшаяся часть строки: холодная голова Найдено соответствие в позиции: 27 Оставшаяся часть строки: холодная голова з лава 24.

Введение в стандартную библиотеку шаблонов Сравнение строк Для сравнения полных строк обычно применяются перегруженные операторы сравнения, описанные выше. Олнако, если возникает необходимость сравнить часть одной строки с другой строкой, необходимо использовать функцию-член совраке(). и зпо созарате(яьхе гуре нап, я1хе Суре лиаз, сопле яетьпд ьззгоь] сопягз Эта функция сравнивает вит символов, принадлежащих объекту згпзЬ, с вызывающей строкой. Если вызывающая строю короче строки язоЬ, функция соврете() возвращает отрицательное число.

Если вызывающая строка длиннее строки лзззЬ, функция ссеазахе() возвращает положительное число. Если длины строк равны, возвращается нуль. Создание С-строки Хотя объекзы класса векапя полезны сами по себе, иногда возникаез необходимость преобразовать их в С-строки. Например, объект класса векзп(з можно применить лля созлания имени файла. Олнако при открытии файла необходимо задать указатель на обычную С-строку. Для решения этой проблемы предназначена функция с век() .

Ее прототип привелен ниже. $ сопев с]зат *с яст() сопят з Эта функция возвращает указатель на С-строку, содержащуюся в вызывающем объекте класса векзпя. С-строка не должна изменяться. Кроме того, нет гарантии, что она останется корректной после выполнения операций нал вызывающим объектом. Строки как контейнеры Класс век1тзя соответствует многим условиям, которые предъявляются конзейнсрам. Это значит, что он поддерживает стандартные контейнерные функции, такие как Недьп(), еп((() и в1ве(). Следовательно, к объектам класса век1пя можно применять алгоритмы из библиотеки БТ], // Строки как контейнеры.

аьпс1пз]е <ьоят севе> а1пс1пде <ятпьпд> аапс1пбе <а1оохШла> ияьпо яаазеярасе враз зпг. ыазп(] ( ястагп ягп1(кббработка строк в языке сь+ очень проста")з ягхьпузз1еетаеот рз зпе // Применение функции яьхе() хох(1=0з 1<ятт1.я1хе()з 1++) соис « яст1(1]з сопс « епб1з // Применение итератора. р = яст1.]зедьп()з м)з11е(р != ясх1.епб(]] соус « *р++з сопя « епб1з Часть П. Язык С++ // Применение алгоритма сочах(). = соппг.(вхх1.Ьедзп(), вхх1.епд(), 'з.']з сопс « "В строке всг1 содержится" « з « "символов 'а' 1п"з // Применение алгоритма сгапв1огт() // для преобразования строчных букв в прописные.

схапвгохт(ясг1.Ьедуп[), вгх1.епб(), ягх1.Ьедуп(), хопррех')з р = вхх1.Ьедзп()з иЬ11е(р != всх1.епд()) сопя « *р++з сопя « епб1з геспгп 0/ Результат работы этой программы показан ниже. | Обработка строк в языке С++ очень проста Обработка строк в языке С++ очень проста В строке яхх1 содержится 3 символа 'а' ОБРАБОТКА СТРОК В ЯЗЫКЕ С++ ОЧЕНЬ ПРОСТА Запись строки в другой контейнер Хотя класс вег1пд является контейнерным, обычно строки хранятся в других стандартных контейнерах, например, в ассоциативных массивах или списках. Так, программу, имитируюцзую телефонную книжку, можно переписать иначе.

Для хранения имен и телефонных номеров она использует ассоциативный массив, содерхгацзий объекты класса вег1пд, а не С-строки, // Г!рименение ассопиативного массива строк // для имитации телефонной книги. 91пс1пбе <Тояххеазп> 91пс1пс)е стар> $1пс1ис)е <ясхзад> пвзпд патеярасе вгс)з злх сза1п() тар<ягхапд, яхг1пд> бахесгогуз г)1хесхоху.гпвехх(ра1х<вгггпд, вхггпд>("Том", "555-4533'))з г)1хесхоху.1пяегх(ра1г<яхх1пд, ясг1пд>("Крис", "555-9678"]); багессогу.звяехс(рагх<ясг1пд, всхупд>("джон", "555-8195"))з с)1гессоху.1пвегс(ра1г<вхг1пд, ясхапд>("Рэчел", "555-0809"))3 всгзпд вз сопх « "Введите имяз с1п » яз тар<ясх1пд, всг1пд>ззгсехасог рз р = 81гессоху.11пб(я)з 11(р != з)1гесхогу.епб()) сопс « "Номер твледоназ " « р->весопбз е1яе Глава 24. Введение в стандартную библиотеку шаблонов соуп « "имени в справочнике нее.тп"г хесогп Ог Н Заключительные замечания о библиотеке ЗТЕ Библиотека Я'Е является необъемлемой частью языка С++.

Многие задачи программирования можно и нужно решать с ее помошью. Эта библиотека обладает большой мошью, гибкостью, и, хотя синтаксис шаблонов довольно сложен, ее очень легко использовать. Ни один программно~ на языке С++ нс имеет права пренебрегать библиотекой Б'П., поскольку она играет весьма важную роль в создании новых прог~ими. Часть й. йзмк С++ Полный спр 2Вочник по Библиотека стьаФртнцк " Функций Язык С++ содержит два вида библиотек. В первой библиотеке хранятся стандартные универсальные функции, не принадлежащие ни одному классу. Эта библиотека унаследована у языка С.

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

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

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

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