Программирование >>  Расширенная версия языка c++ 

1 ... 150 151 152 [ 153 ] 154 155 156 ... 227


Глаеа М. Библиотека стандартных шаблонов 465

Указанные операторы позволяют использовать объекты типа string в обычных выражениях и отказаться от вызовов специализированных функций, например, функций strcpyO или strcat(). Как правило, объекты типа string в выражениях можно записывать вместе с обычными, оканчивающимися нулем строками. Например, объект типа string можно присвоить оканчивающейся нулем строке.

Оператор + можно использовать для конкатенации объекта тип с

другим объектом типа string или для конкатенации объекта типа string со строкой в стиле С. Поддерживаются следующие варианты:

string + string string + С-string

C-atring + string --.i. . -лщ--.-

Кроме этого, оператор + можно использовать для присоединения одиночного символа к концу строки.

В классе string определена константа npos, обычно равная!. Эта константа отражает максимально возможную длину строки.

Несмотря на то, что большая часть операций над строками может быть выполнена с помощью строковых операторов, для некоторых наиболее сложных или необычных операций нужны функции - члены класса string. Хотя их слишком много для одной главы, о некоторых наиболее полезных здесь будет рассказано. Чтобы присвоить одну строку другой используется функция assign(). Ниже представлены две основные формы этой функции:

,.1. i.. 1

string string

slzetype начало, sizetype число) string Cassign(const char *строка, size type число);

В первой форме несколько символов, количество которых равно параметру число из объекта объект строка, начиная с индекса начало, присваиваются вызывающему объекту. Во второй форме вызывающему объекту присваивается первые несколько символов, количество которых равно параметру число из оканчивающейся нулем строки строка. В обоих случаях функция возвращает ссылку на вызывающий объект. Очевидно, что для присваивания одной целой строки другой гораздо проще использовать оператор =. Функция assign О может понадобиться только при присваивании части строки.

Присоединить часть одной строки к другой можно с помощью функции-члена append(). Ниже представлены две основные формы этой функции:

stringfiappennet string Ьоб вхт с!грожа,

siM type качало, size type число) ; string SappendCoonet char * строка, 3ize type число) ;

В первой форме несколько символов, количество которых равно параметру число из объекта объект строка, начиная с индекса начало присоединяются к вызывающему объекту. Во второй форме к вызывающему объекту присое-



slxe typet find (const string Лоб вк!г с!грока,

size type качало = 0) const;

string

.. size type начало = npos) const;

диняются первые несколько волов, количество которхх равно параметру число, из оканчивающейся нулем строки строка. В обоих случаях функция возвращает ссылку на мызывающий объект. Очевидно, что для присоединения одной целой строки к другой гораздо проще использовать оператор +. Функция appendO может понадобиться только при присоединении части строки.

С помощью функции rt() асе() можно соответственно вставлять или заменять символе! в строке. Ниже представлен! прототипе! основнхх

форм этих функций:

string type илчало, const string йов%ект строка) ;

string fiinsert(size typ мало, const string бойьвхтсороха, aize type начало вставхя, size type число);

string fireplace мало, sizetype тесло,

const string &объект строка) :

string fireplace (3iBe type начало, size type Hcx Konsp, ,;{, const string 6оЛвх!г С!грожа,

J siz:e type начало замени, size type чноло вазлеиа);

В первой форме функции insertO объект объект строка вставляется в вызывающую строку по индексу начало. Во второй форме функции insertO число символов из объекта объект строка, начиная с индекса начало вставки, вставляется в вызывающую строку по индексу начало.

В первой форме функции гер1асе() число символов, начиная с индекса начало, заменяется в вызывающей строке объектом объектстрока. Во второй форме функции replaceO в вызывающей строке заменяется исхчисло символов, начиная с индекса начало, при этом из объекта обьект строка берутся чисдо замены символов, начиная с индекса 11ачало замены. В обоих случаях функция возвращает ссылку на вызывающий объект.

Удалить символы из строки можно с помощью функции е(). Ниже показана одна из форм этой функции:

string fierase(size typ мчало = 0 уре число = проз);

Функция удаляет число символов из вызывающей строки, начиная с индекса начало. Возвращаемым значением является ссылка на вызывающий объект.

В классе string поддерживается несколько функций-членов предназначенных для поиска строк. Среди них имеются функции find() и rl)ricl(). Ниже показаны прототипе! основнхх версий этих функций:



Начиная с индекса начало функция find() ищет в вызывающей строке первое совпадение со строкой, содержащейся в объекте объект строка. Если искомая строка найдена, функция fmd() возвращает индекс вызывающей строки, соответствующий найденному совпадению. Если искомая строка не найдена, функция fiiid() возвращает значение npos. В противоположность функции tindO, функция rfindO, начиная с индекса начало, но в обратном направлении, ищет в вызхвающей строке первое совпадение со строкой, содержащейся в объекте объект строка. (То есть ищет последнее совпадение со строкой, содержащейся в объекте объектстрока.) Если искомая строка найдена, функция rfind() возвращает индекс вызывающей строки, соответствующий найденному совпадению. Если искомая строка не найдена, функция rflndO возвращает значение npos.

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

int GOropaxe(size type начало, size type число,

const string С!гро*:а) const;

Здесь с вызывающей строкой сравниваются число символов объекта объ-ект строка, начиная с индекса начало. Если вызывающая строка меньше, чем о6ъект строка, функция сотраге() возвращает отрицательное значение. Если вызывающая строка больше, чем объектстрока, функция сотраге() возвращает положительное значение. Если вызывающая строка равна объекту о6ъект строка, возвращаемое значение функции сотраге() равно нулю.

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

const cha str() const;

Функция возвращает указатель на оканчивающуюся нулем версию строки,

содержащуюся в вызывающем объекте типа string. Оканчивающаяся нулем

строка не должна меняться. Кроме этого, если над объектом типа string выполнялись какие-либо другие операции, правильность выполнения функции c str() не гарантируется.

Поскольку класс string является контейнером, в нем поддерживаются функции begin() и end(), возвращающие соответственно итератор начала и конца строки. Также поддерживается функция sizeQ, возвращающая текущее число символов строки.



1 ... 150 151 152 [ 153 ] 154 155 156 ... 227

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика