Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Конструкторы и присваивание строк




В классе string определено несколько конструкторов:

srting (); // создает пустой объект типа string

string (const *char); // создает объект типа “строка” на основе строки

// старого стиля

string (const *char, int n); // создает объект типа string и записывает туда

// n символов из строки, указанной

// первым параметром

string (string &); // конструктор копирования, создающий новый объект

// как копию объекта, переданного ему в качестве параметра

В классе string определены три операции присваивания:

string & operator = (const string & str);

string & operator = (const char * s);

string & operator = (char c);

 

Примеры

string s1;

string s2 (“Вася”);

string s3 (s2);

s1 = ‘x’;

s2 = s3;

Операции

Ниже приведены операции со строками.

Операция Действие
= Присваивание
+ Конкатенация
= = Равенство
! = Неравенство
< Меньше
< = Меньше или равно
> Больше
> = Больше или равно
[ ] Индексация
<< Вывод
>> Ввод
+ = Добавление

 

Для строк типа string не соблюдается соответствие между адресом первого элемента строки и именем, как это было в случае строк старого стиля, т.е. &s[0] не равно s.

Кроме операции индексации для доступа к элементу строки определена функция at:

string s(“Вася”);

cout << s.at (1); // будет выведен символ а

 

Функции

Присваивание и добавление частей строк

Для присваивания части одной строки другой служит функция assign:

assign (const string & str);

assign (const string & str, size_type pos, size_type n);

assign (const char * str, size_type n);

Первая функция присваивает строку str вызывающей строке (эквивалент операции присваивания):

string s1 (“Вася”), s2;

s2.assign (s1);

Вторая функция присваивает вызывающей строке часть строки str, начиная с позиции pos. Если pos больше длины строки, порождается исключение out_of_range. Вызывающей строке присваивается n символов либо, если pos больше длины строки str, – все символы до конца строки str.

Третья функция присваивает вызывающей строке n символов строки s старого типа.

Для добавления части одной строки к другой служит функция append:

append (const string & str);

append (const string & str, size_type pos, size_type n);

append (const char* s, size_type n);

Первая функция добавляет строку str к вызывающей строке (эквивалент операции +).

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

Третья функция добавляет к вызывающей строке n символов строки s старого типа.

Преобразование строк

Для вставки в одну строку части другой строки служит функция insert:

insert (size_type pos1, const string & str);

insert (size_type pos1, const string & str, size_type pos2, size_type n);

insert (size_type pos, const char* s, size_type n);

Первая функция вставляет строку str в вызывающую строку, начиная с позиции pos1 вызывающей строки (т.е. взывающая строка замещается строкой str, наичная с позиции pos1, а после str располагаются остальные символы вызывающей строки).

Вторая функция вставляет в вызывающую строку, начиная с позиции pos1, часть строки str длиной n символов, начиная с позиции pos2.

Третья функция вставляет в вызывающую строку n элементов строки старого типа, начиная с позиции pos вызывающей строки.

Для удаления части строки служит функция erase:

erase (size_type pos = 0, size_type n = pos);

Функция удаляет из вызывающей строки n элементов, начиная с позиции pos. Если pos не указана, элементы удаляются с начала строки.

Очистку всей строки можно выполнить с помощью функции clear:

void clear ();

Для замены части строки служит функция replace:

replace (size_type pos1, size_type n1,const string & str);

replace (size_type pos1, size_type n1,const string & str, size_type pos2, size_type n2);

Здесь pos1 – позиция вызывающей строки, начиная с которой выполняется замена; n1 – количество удаляемых элементов, pos2 – позиция строки str, начиная с которой она вставляется в вызывающую строку; n2 – количество вставляемых элементов строки str.

Третья форма функции:

replace (size_type pos1, size_type n1,const char* s, size_type n2);

позволяет заменить n1 символов вызывающей строки на n2 символов строки старого типа s.

Для обмена содержимого двух строк служит функция swap:

swap (string & s);

Для выделения части строки служит функция substr:

substr (size_type pos = 0, size_type n = npos);

Эта функция возвращает подстроку вызывающей строки длиной n символов, начиная с позиции npos.

Для преобразования объектов типа string в строки старого стиля используется функция c_str:

const char* c_str () const;

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

Примеры

 

String s1 (“прекрасная королева”), s2 (“ле”), s3(“корова”);

cout << s3.insert (4, s2) << endl; // получится: королева

cout << s3.insert (7, “к”) << endl; // получится: королевка

s1.erase (0,3); // получится: s1=”красная королева”

cout << s1.erase (12, 2) << endl; // получится: красная корова

Поиск подстрок

 

Для поиска подстрок в классе string предусмотрено большое разнообразие функций. Рассмотрим некоторые их них:

size_type find (const string & str, size_type pos = 0) const;

ищет самое левое вхождение строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию в строке или число npos (максимальное число типа size_type), если строка не найдена.

size_type find (const char с, size_type pos = 0) const;

ищет самое левое вхождение символа c в вызывающую строку, начиная с позиции pos, и возвращает позицию в строке или число npos, если строка не найдена.

size_type rfind (const string & str, size_type pos = npos) const;

ищет самое правое вхождение строки str в вызывающую строку до позиции pos и возвращает позицию в строке или число npos, если строка не найдена.

size_type rfind (const char c, size_type pos = 0) const;

ищет самое правое вхождение символа c в вызывающую строку, до позиции pos и возвращает позицию в строке или число npos, если строка не найдена.

Примеры

int i, j;

string s1 (“лесная королева”), s2 (“ле”);

i = s1.find (s2);

j = s1.rfind (s2);

cout << “Первое вхождение S2 в S1 ” << i<< endl;

cout << “Последнее вхождение S2 в S1 “ << j<< endl;

 

На экране получится:

Первое вхождение S2 в S1 0

Последнее вхождение S2 в S1 11

 

Сравнение частей строк

 

Для сравнения частей строк используется функция compare (для сравнения сторк целиком применяются перегруженные операции отношения):

int compare (const string & str) const;

int compare (size_type pos1, size_type n1, const string & str) const;

int compare (size_type pos1, size_type n1, const string & str, size_type pos2, size_type n2) const;

Первая форма функции сравнивает две строки целиком и возвращает значение меньше нуля, если вызывающая строка “меньше” str, равное нулю, если строки одинаковы, и больше нуля, если вызывающая строка “больше”. Здесь “больше” или “меньше” означает сраинение букв по старшинству (порядку), т.е. “aa” и “aa” равны, “аб” и “ав” – вторая строка “больше” и т.п.

Вторая форма функции выполняет аналогичные действия, но сравнивает со строкой str n1 символов вызывающей строки, начиная с позиции pos1.

Третья форма функции сравнивает n1 символов вызывающей строки, начиная с позиции pos1, с подстрокой строки str длиной n2 символов, начиная с позиции pos2.

 





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 288 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Вы никогда не пересечете океан, если не наберетесь мужества потерять берег из виду. © Христофор Колумб
==> читать все изречения...

2339 - | 2144 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.