Строки стандартной библиотеки С++

Содержание

Слайд 2

Строки

Стандартная библиотека C++ включает стандартный готовый класс string в заголовочном файле string.
#include

Строки Стандартная библиотека C++ включает стандартный готовый класс string в заголовочном файле

using namespace std;
Класс string автоматически управляет памятью для строк, определяет большое количество удобных операций и методов.

Слайд 3

Конструкторы строк

Создание пустой строки
string()
Создание строки на основе нуль-терминальной строки
string(const char* s)
Создание строки

Конструкторы строк Создание пустой строки string() Создание строки на основе нуль-терминальной строки
на основе первых n символов нуль-терминальной строки
string(const char* s, int n)
Конструктор копирования
string(string& s)

Слайд 4

Пример использования конструкторов

string s1;
string man("Ivanov");
string dog("Sharik - is a good dog", 6);
string

Пример использования конструкторов string s1; string man("Ivanov"); string dog("Sharik - is a
s2(man);
cout << s1 << endl;
cout << man << endl;
cout << dog << endl;
cout << s2 << endl;

Слайд 5

Присвоение строк

Присвоение строки типа string
string operator=(const string& s);
Присвоение нуль-терминальной строки
string operator=(const char*

Присвоение строк Присвоение строки типа string string operator=(const string& s); Присвоение нуль-терминальной
s);
Присвоение символа
string operator=(char c);

Слайд 6

Пример использования конструкторов и присвоения

string s1, s2, s3;
s1 = "Hacker";
s2 = s1;
s3

Пример использования конструкторов и присвоения string s1, s2, s3; s1 = "Hacker";
= '$';
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;

Слайд 7

Методы получения характеристик строк

size_type – тип размера, как правило unsigned long

Методы получения характеристик строк size_type – тип размера, как правило unsigned long

Слайд 8

Пример

string s = "Pink Floyd";
cout << "length = " << s.length() <<

Пример string s = "Pink Floyd"; cout cout cout cout if (!s.empty()) cout
endl;
cout << "size = " << s.size() << endl;
cout << "max_size = " << s.max_size() << endl;
cout << "capacity = " << s.capacity() << endl;
if (!s.empty())
cout << "is not empty!!!" << endl;

Слайд 9

Перегруженные операции

Перегруженные операции

Слайд 10

Замечания об индексировании

Символы строки индексируются от 0 до length()-1
Для индексирования строк

Замечания об индексировании Символы строки индексируются от 0 до length()-1 Для индексирования
также существует метод
char& at(size_type index);
В отличие от [] он контролирует выход индекса за границу диапазона и при необходимости генерирует стандартное исключение out_of_range

Слайд 11

Пример

string s1, s2, s3;
cout << "Enter s1 =" << endl;
cin >> s1;
cout

Пример string s1, s2, s3; cout cin >> s1; cout cin >>
<< "Enter s2 =" << endl;
cin >> s2;
s3 = s1 + s2;
cout << "s1 + s2 = " << endl;
cout << s3 << endl;
if (s1 == s2)
cout << "s1 == s2" << endl;
else if (s1 < s2)
cout << "s1 < s2" << endl;
else
cout << "s1 > s2" << endl;
for (int i = 0; i < s1.length(); i++) {
s1[i]++;
cout << s1[i] << endl;
}

Слайд 12

Методы присвоения строк

Первый и третий метод эквивалентны использованию операции =

Методы присвоения строк Первый и третий метод эквивалентны использованию операции =

Слайд 13

Пример

char os[] = "Carlson";
string ns = "Kid";
string s1, s2, s3, s4;
s1.assign(ns); //s1

Пример char os[] = "Carlson"; string ns = "Kid"; string s1, s2,
= ns;
s2.assign(ns, 1, 2); //1 - pos, 2 – n
s3.assign(os); //s3 = os;
s4.assign(os, 4); //4 – n
cout << s1 << endl << s2 << endl << s3 << endl << s4 << endl;

Слайд 14

Методы добавления строк

Методы добавления строк

Слайд 15

Пример

char os[] = "Carlson";
string ns = "Kid";
string ls = "Romeo loves Juliet";
string

Пример char os[] = "Carlson"; string ns = "Kid"; string ls =
s;
s.append(ns);
s.append(ls, 5, 7); //5 - pos, 7 – n
s.append(os);
s.append(" very much thank you (c)Master Yoda", 10); //10 - n
cout << s << endl;

Слайд 16

Методы вставки в строку

Методы вставки в строку

Слайд 17

Пример

char os[] = "lies";
string ns = "every";
string ns1 = "unknown body was

Пример char os[] = "lies"; string ns = "every"; string ns1 =
on the floor";
string s = " ";
s.insert(0, ns);
s.insert(5, ns1, 8, 4);
s.insert(s.length(), os);
s.insert(s.length(), "(c) House M.D. I'm too handsome to do paperwork.", 15);
cout << s << endl;

Слайд 18

Методы удаления

Метод удаления n символов строки начиная с позиции pos
erase(size_type pos

Методы удаления Метод удаления n символов строки начиная с позиции pos erase(size_type
= 0,
size_type n = npos)
если n не указано – удаляются символы до конца строки
Метод очистки строки
clear()

Слайд 19

Пример

string s = "1qwanza1234maydan";
s.erase(1, 10); //1 - pos, 10 – n
s.erase(4); //4

Пример string s = "1qwanza1234maydan"; s.erase(1, 10); //1 - pos, 10 –
- pos, n = npos
cout << s << endl;
s.erase(); //pos = 0, n = npos
cout << s << endl;

Слайд 20

Метод получения подстроки

Получение подстроки длины n, начиная с позиции pos
string substr(size_type

Метод получения подстроки Получение подстроки длины n, начиная с позиции pos string
pos = 0,
size_type n = npos) const;
Если n не указывается, то возвращается подстрока из всех символов до конца вызывающей строки

Слайд 21

Пример

string s = "foxy hare is very smart";
string u, w;
u = s.substr(5,

Пример string s = "foxy hare is very smart"; string u, w;
4);
w = s.substr(s.length() - 5);
cout << w << " " << u << endl;

Слайд 22

Методы замены в строке

Методы замены в строке

Слайд 23

Пример

string u = "slonik";
string w = "the muhacker";
string s = "muha -

Пример string u = "slonik"; string w = "the muhacker"; string s
slonik";
s.replace(0, 4, u);
s.replace(9, 6, w, 4, 4);
cout << s << endl;

Слайд 24

Методы поиска подстрок

Метод нахождения позиции первого (левого) вхождения подстроки s в вызывающую

Методы поиска подстрок Метод нахождения позиции первого (левого) вхождения подстроки s в
строку. Поиск производится, начиная с позиции pos.
size_type find(const string& s,
size_type pos = 0)const;
Возвращаемое значение – индекс вхождения, если нет ни одного вхождения, то возвращается npos.
Метод нахождения позиции последнего (правого) вхождения подстроки. pos определяет позицию, до которой происходит поиск
size_type rfind(const string& s,
size_type pos = npos)const;

Слайд 25

Пример

string s = "two tea. two two";
string u = "two";
cout << s.find(u,

Пример string s = "two tea. two two"; string u = "two"; cout cout cout
0) << endl;
cout << s.find(u, 3) << endl;
cout << s.rfind(u) << endl;

Слайд 26

Методы сравнения

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

Методы сравнения int compare(const string& s) const; int compare(size_type pos1, size_type n1,
const string& s,
size_type pos2,
size_type n2) const;
Возвращаемое значение интерпретируется также, как у функции stcmp

Слайд 27

Пример

string s = "aabb";
string u = "aabc";
cout << s.compare(u) << endl;
cout <<

Пример string s = "aabb"; string u = "aabc"; cout cout
s.compare(0, 2, u, 0, 2) << endl;

Слайд 28

Дополнительные методы

Получение нуль-терминальной строки
const char* c_str() const;
Обмен строк
swap(string& s)

Дополнительные методы Получение нуль-терминальной строки const char* c_str() const; Обмен строк swap(string& s)

Слайд 29

Пример

string s1 = "Children of men";
string s2 = "Saving Private Ryan";
char os[1000];
strcpy(os,

Пример string s1 = "Children of men"; string s2 = "Saving Private
s1.c_str());
cout << os << endl;
s1.swap(s2);
cout << s1 << endl << s2 << endl;