Слайд 2Строки
Стандартная библиотека C++ включает стандартный готовый класс string в заголовочном файле string.
#include
![Строки Стандартная библиотека C++ включает стандартный готовый класс string в заголовочном файле](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-1.jpg)
using namespace std;
Класс string автоматически управляет памятью для строк, определяет большое количество удобных операций и методов.
Слайд 3Конструкторы строк
Создание пустой строки
string()
Создание строки на основе нуль-терминальной строки
string(const char* s)
Создание строки
![Конструкторы строк Создание пустой строки string() Создание строки на основе нуль-терминальной строки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-2.jpg)
на основе первых 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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-3.jpg)
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); Присвоение нуль-терминальной](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-4.jpg)
s);
Присвоение символа
string operator=(char c);
Слайд 6Пример использования конструкторов и присвоения
string s1, s2, s3;
s1 = "Hacker";
s2 = s1;
s3
![Пример использования конструкторов и присвоения string s1, s2, s3; s1 = "Hacker";](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-5.jpg)
= '$';
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
Слайд 7Методы получения характеристик строк
size_type – тип размера, как правило unsigned long
![Методы получения характеристик строк size_type – тип размера, как правило unsigned long](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-6.jpg)
Слайд 8Пример
string s = "Pink Floyd";
cout << "length = " << s.length() <<
![Пример string s = "Pink Floyd"; cout cout cout cout if (!s.empty()) cout](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-7.jpg)
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;
Слайд 10Замечания об индексировании
Символы строки индексируются от 0 до length()-1
Для индексирования строк
![Замечания об индексировании Символы строки индексируются от 0 до length()-1 Для индексирования](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-9.jpg)
также существует метод
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 >>](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-10.jpg)
<< "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Методы присвоения строк
Первый и третий метод эквивалентны использованию операции =
![Методы присвоения строк Первый и третий метод эквивалентны использованию операции =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-11.jpg)
Слайд 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,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-12.jpg)
= 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;
Слайд 15Пример
char os[] = "Carlson";
string ns = "Kid";
string ls = "Romeo loves Juliet";
string
![Пример char os[] = "Carlson"; string ns = "Kid"; string ls =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-14.jpg)
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;
Слайд 17Пример
char os[] = "lies";
string ns = "every";
string ns1 = "unknown body was
![Пример char os[] = "lies"; string ns = "every"; string ns1 =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-16.jpg)
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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-17.jpg)
= 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 –](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-18.jpg)
- 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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-19.jpg)
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;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-20.jpg)
4);
w = s.substr(s.length() - 5);
cout << w << " " << u << endl;
Слайд 23Пример
string u = "slonik";
string w = "the muhacker";
string s = "muha -
![Пример string u = "slonik"; string w = "the muhacker"; string s](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-22.jpg)
slonik";
s.replace(0, 4, u);
s.replace(9, 6, w, 4, 4);
cout << s << endl;
Слайд 24Методы поиска подстрок
Метод нахождения позиции первого (левого) вхождения подстроки s в вызывающую
![Методы поиска подстрок Метод нахождения позиции первого (левого) вхождения подстроки s в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-23.jpg)
строку. Поиск производится, начиная с позиции 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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-24.jpg)
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,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-25.jpg)
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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-26.jpg)
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)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-27.jpg)
Слайд 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](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368877/slide-28.jpg)
s1.c_str());
cout << os << endl;
s1.swap(s2);
cout << s1 << endl << s2 << endl;