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

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

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

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

Запомните, что это не доводы в пользу отказа от обычных, оканчивающихся нулем массивов. Они остаются наиболее эффективным способом реализации символьных строк. Тем не менее, если при создании приложения скорость выполнения программы не являетсядоминирующим фактором, новый класс string предоставляет вам безопасный и полностью интегрированный в среду программирования C++ способобработки строк.464СамоучительС++Хотя строковый класс традиционно не считают частью библиотеки стандартных шаблонов, тем не менее, это один из определенных в C++ классовконтейнеров.

Это, в частности, означает, что он поддерживает описанные впредыдущем разделе алгоритмы. Кроме этого, для обработки строк имеютсядополнительные возможности. Чтобы получить доступ к классу string, впрограмму следует включить заголовок <string>.Класс string очень велик, в нем имеется множество конструкторов и функций-членов. Помимо этого многие функции-члены имеют массу перегруженных форм.

По этой причине в одной главе невозможно рассказать о всехчленах класса string. Вместо этого мы исследуем только некоторые, основные его возможности. После получения базовых знаний о работе классаstring в целом, все остальное вы сможете легко понять самостоятельно.В классе string поддерживается несколько конструкторов. Ниже представлены прототипы трех из них, которые чаще всего используются:String () ;string(const char *строка);string(const string Ьстрока);В первой форме создается пустой объект типа string. Во второй форме объект типа string из оканчивающейся нулем строки, обозначенной указателем строка.

Эта форма обеспечивает преобразование из оканчивающейсянулем строки в объект типа string. В третьей форме объект типа string создается из другого объекта типа string.Ниже перечислена часть операторов, допустимых при работе с объектамитипа string:ОператорЗначение=Присваивание+Конкатенация+=Присваивание с конкатенациейиРавенство!=Неравенство<Меньше<=Меньше или равно>Больше>=Больше или равно[]Индекс«Вывод»ВводГлаваi_?4, Библиотека стандартных шаблонов465Указанные операторы позволяют использовать объекты типа string в обычных выражениях и отказаться от вызовов специализированных функций,например, функций strcpyQ или strcatQ, Как правило, объекты типа string ввыражениях можно записывать вместе с обычными, оканчивающимися нулем строками. Например, объект типа string можно присвоить оканчивающейся нулем строке.Оператор + можно использовать для конкатенации объекта типа string сдругим объектом типа string или для конкатенации объекта типа string сострокой в стиле С.

Поддерживаются следующие варианты:string + stringstring + C-stringC-atring + stringКроме этого, оператор + можно использовать для присоединения одиночного символа к концу строки.В классе string определена константа npos, обычно равная -1. Эта константаотражает максимально возможную длину строки.Несмотря на то, что большая часть операций над строками может быть выполнена с помощью строковых операторов, для некоторых наиболее сложных или необычных операций нужны функции — члены класса string.

Хотяих слишком много для одной главы, о некоторых наиболее полезных здесьбудет рассказано. Чтобы присвоить одну строку другой используется функция assign (). Ниже представлены две основные формы этой функции:string Sassign(const string &объекя_строка,size_type начало, siza__type число) ;string Sassign(const char *строка, size_type число);В первой форме несколько символов, количество которых равно параметручисло из объекта объект_строка, начиная с индекса начало, присваиваютсявызывающему объекту. Во второй форме вызывающему объекту присваивается первые несколько символов, количество которых равно параметру числоиз оканчивающейся нулем строки строка. В обоих случаях функция возвращает ссылку на вызывающий объект. Очевидно, что для присваиванияодной целой строки другой гораздо проще использовать оператор =.

Функция assign О может понадобиться только при присваивании части строки.Присоединить часть одной строки к другой можно с помощью функциичлена append(). Ниже представлены две основные формы этой функции:string fiappend (const string ЕооЧежт_с!грожа,size_type начало, size_type число) ;string Sappend(const char *строка, size__type число) ;В первой форме несколько символов, количество которых равно параметручисло из объекта объект_строка, начиная с индекса начало присоединяютсяк вызывающему объекту.

Во второй форме к вызывающему объекту присос-466Самоучитель C++диняются первые несколько символов, количество которых равно параметручисло, из оканчиваюшейся нулем строки строка. В обоих случаях функциявозвращает ссылку на вызывающий объект. Очевидно, что для присоединения одной целой строки к другой гораздо проще использовать оператор +.Функция appendQ может понадобиться только при присоединении частистроки.С помощью функций insert() и replaceQ можно соответственно вставлятьили заменять символы в строке. Ниже представлены прототипы основныхформ этих функций:string &insert(size_type начало, const string £ооЧежт_с!грока) ;string fiinsert(size_type начало, const string &объект_сяроха,size_type начало_вставки, size_typa число);string fireplace (size_type начало, size_type тесло,const string йобФекг строка) ;string fireplace (size_type начало, size_type ксх_номер,const string &объект_строка,size type начало замени, size type число замены) ;В первой форме функции insertQ объект объект_спгрока вставляется в вызывающую строку по индексу начало.

Во второй форме функции insert() числосимволов из объекта объект__строка, начиная с индекса начало_вставки,вставляется в вызывающую строку по индексу начало.В первой форме функции replace() число символов, начиная с индекса начало, заменяется в вызывающей строке объектом объект^строка. Во второйформе функции replaceQ в вызывающей строке заменяется исх_число символов, начиная с индекса начало, при этом из объекта объект_строка берутся число_замены символов, начиная с индекса начало_замены. В обоих случаях функция возвращает ссылку на вызывающий объект.Удалить символы из строки можно с помощью функции eraseQ. Ниже показана одна из форм этой функции:string fierase(size_type начало = 0, size_type число = npos);Функция удаляет число символов из вызывающей строки, начиная с индексаначало. Возвращаемым значением является ссылка на вызывающий объект.В классе string поддерживается несколько функций-членов, предназначенных для поиска строк.

Среди них имеются функции find() и rfindQ. Нижепоказаны прототипы основных версий этих функций:size_type find (const string Ьобъект__строка,size_type начало = 0) const;size_type rfind (const string &объек<р_строха,size_type начало = npos) const;Глава 14. Библиотека стандартных шаблонов467^Начиная с индекса начало функция find() ищет в вызывающей строке первое совпадение со строкой, содержащейся в объекте объект_строка. Еслиискомая строка найдена, функция find() возвращает индекс вызывающейстроки, соответствующий найденному совпадению. Если искомая строка ненайдена, функция fmd() возвращает значение npos.

В противоположностьфункции find(), функция rfindQ, начиная с индекса начало, но в обратномнаправлении, ищет в вызывающей строке первое совпадение со строкой,содержащейся в объекте объект_строка. (То есть ищет последнее совпадение со строкой, содержащейся в объекте объект_строка.) Если искомаястрока найдена, функция rfindQ возвращает индекс вызывающей строки,соответствующий найденному совпадению. Если искомая строка не найдена, функция iTind() возвращает значение npos.Для сравнения целых строковых объектов удобнее всего пользоваться описанными ранее перегруженными операторами отношения. Тем не менее,если вы захотите сравнить части строк, вам понадобится функция-член сотраге().

Ниже представлен прототип этой функции:int compare(size_type начало,size_type число,const string 6объвкч!_строка)const;Здесь с вызывающей строкой сравниваются число символов объекта объект_строка, начиная с индекса начало. Если вызывающая строка меньше,чем объект_строка, функция compareQ возвращает отрицательное значение.Если вызывающая строка больше, чем объект^строка, функция сотраге()возвращает положительное значение. Если вызывающая строка равна объекту объект_строка, возвращаемое значение функции сотраге() равно нулю.Хотя объекты типа string сами по себе очень удобны, иногда у вас все жебудет возникать необходимость в версии строки в виде массива символов,оканчивающихся нулем.

Например, объект типа string можно использоватьдля образования имени файла. Однако при открытии файла вам придетсязадавать указатель на стандартную, оканчивающуюся нулем строку. Для решения проблемы в классе string имеется функция-член c_str(), прототипкоторой показан ниже:const char *c_str() const;Функция возвращает указатель на оканчивающуюся нулем версию строки,содержащуюся в вызывающем объекте типа string. Оканчивающаяся нулемстрока не должна меняться.

Кроме этого, если над объектом типа string выполнялись какие-либо другие операции, правильность выполнения функцииc_str() не гарантируется.Поскольку класс string является контейнером, в нем поддерживаются функции beginQ и end(), возвращающие соответственно итератор начала и концастроки.

Также поддерживается функция sizeQ, возвращающая текущее число символов строки.468Самоучитель C++Примеры1.—^Хотя мы уже привыкли к традиционным строкам в стиле С, в C++ классstring делает обработку строк существенно проще. Например, при работе собъектами типа string для присваивания строк можно использовать оператор—, для конкатенации строк — оператор +, а для сравнения строк — различные операторы сравнения. В следующей программе показаны эти операции.// Короткий пример использования строкового класса^include <iostream>ttinclude <string>using namespace std;int(main()string strl("Представление строк"};string str2("Вторая строка");string str3;// присваивание строкstr3 = strl;cout « strl « "\n" « str3 « "\n";// конкатенация двух строкstr3 = strl + Str2;cout « str3 « "\n";// сравнение строкif(str3 > strl) cout « "str3 > strl\n";if(str3 == strl+str2) cout « "str3 — strl+str2\n";// строковому объекту можно присвоить обычную строкуstrl = "Это обычная строка\п";cout « strl;// создание строкового объекта// с помощью другого строкового объектаstring str4(strl);cout « str4;// ввод строкиcout « "Введите строку: ";cin » str4;cout « str4;return 0;После выполнения программы на экране появится следующее:Представление строкПредставление строкГлава 14.

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

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

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

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