- •Строки стандартного класса string 2
- •Примеры использования методов строк-объектов 5
- •Стандартная библиотека шаблонов 14
- •Шаблонный класс для представления динамических одномерных массивов 35 Строки стандартного класса string
- •Операции
- •Методы класса string
- •Примеры использования методов строк-объектов Примеры работы со строками разных типов
- •Определение строк, присваивание, конкатенация, вычисление длины
- •Методы корректировки
- •Ввод-вывод
- •Доступ к элементу строки, метод at, метод copy
- •Методы сравнения
- •Методы поиска подстроки
- •Выделение подстроки, метод substr
- •Обеспечение ввода символов только из заданного набора
- •Подсчет количества вхождений слова в текст
- •Вывод вопросительных предложений
- •Стандартная библиотека шаблонов
- •Контейнеры
- •Общие методы и операции контейнеров Способы определения объекта для последовательного контейнера
- •Оценка числа элементов и размеров контейнера
- •Сравнение контейнеров
- •Присваивание контейнеров и обмен содержимым
- •Методы частного применения
- •Итераторы
- •Алгоритмы
- •Примеры Использование контейнера vector и его итераторов для вычисления диапазона копирования элементов массива
- •Использование контейнера vector при сортировке строк
- •Использование контейнера vector при считывании чисел из файла
- •Использование контейнера vector при считывании строк из файла
- •Использование контейнера list для реверса последовательности элементов
- •Демонстрация обратного итератора
- •Использование алгоритма find()для поиска заданного числа
- •Использование контейнера list при считывании чисел из файла
- •Использование контейнера list при считывании строк из файла
- •Использование контейнера list и потокового итератора при выводе последовательности структур на экран
- •Использование адаптера stack при считывании чисел из файла
- •Вычисление числа объектов с заданным значением
- •Поиск первого объекта с заданным значением
- •Поиск в массиве строк заданного имени
- •Использование потокового итератора при чтении вещественных чисел с клавиатуры и записи их в файл
- •Использование потокового итератора при чтении чисел из файла и выводе их на экран
- •Шаблонный класс для представления динамических одномерных массивов
Ввод-вывод
#include <string>
int main() {
string s;
cout << "input slova:" << endl;
cin >> s; //ввод до первого пробельного символа
cout << s << endl; //вывод строки
cin.get(); //удаление из потока символа ‘\n’
cout << "input c probelami:" << endl;
getline(cin,s); //ввод строки с пробелами
cout << s << endl;
cout << "input strok c $:" << endl;
getline(cin,s,'$'); //ввод строки до символа завершения '$'
cout << s << endl;
_getch();
return 0;
}
// ввод-вывод
#include <string>
int main()
{
string full_name, nickname, address;
string greeting("Hello, ");
cout << "Enter your full name: ";
getline(cin, full_name); //ввод строки с пробелами
cout << "Your full name is: " << full_name << endl;
cout << "Enter your nickname: ";
cin >> nickname; //ввод строки-объекта
greeting += nickname; //добавление имени к строке-приветствию
cout << greeting << endl; //вывод: "Hello, Jim"
cout << "Enter your address on separate lines\n";
cout << "Terminate with '$'\n";
getline(cin, address, '$'); //ввод нескольких строк
cout << "Your address is: " << address << endl;
_getch();
return 0;
}
Результаты работы программы:
Enter your full name: lar str
Your full name is: lar str
Enter your nickname: mama
Hello, mama
Enter your address on separate lines
Terminate with '$'
aaa
bbb
ccc$
Your address is:
aaa
bbb
ccc
Методы корректировки
#include <string>
int main()
{
string s1("Quick! Send for Count Graystone.");
string s2("Lord");
string s3("Don't ");
s1.erase(0, 7); //удаление "Quick! "
s1.replace(9, 5, s2); //замена "Count" на "Lord"
s1.replace(0, 1, "s"); //замена 'S' на 's'
s1.insert(0, s3); //вставка "Don't " в начало
s1.erase(s1.size()-1, 1); //удаление '.'
s1.append(3, '!'); //добавление "!!!"
size_t x = s1.find(' '); //поиск пробела и возврат его позиции
while( x < s1.size() ) //продолжать пока пробел не найден
{
s1.replace(x, 1, "/"); //замена пробела на слэш
x = s1.find(' '); //поиск следующего пробела
}
cout << "s1: " << s1 << endl;
_getch();
return 0;
}
Результаты работы программы:
s1: Don't/send/for/Lord/Graystone!!!
//методы assign, insert, erase, replace
#include <string>
int main() {
string s0, s01, s02,s03, s04;
s0.assign("aabb"); //s0=”aabb”
s01.assign(s0); //s01=s0
s02.assign("ccc"); //s02=”ccc”
s03.assign(s01,2,1); //s03 присваивается 2-ой символ из s01
s04.assign("abcd",3); //s04 присваивается первые 3 символa строки "abcd"
cout << "s0= " <<s0<< endl; //
cout << "s01= " <<s01 << endl;
cout << "s02= " <<s02 <<endl;
cout << "s03= " <<s03 <<endl;
cout << "s04= " <<s04 <<endl;
string s1 ("a"), s2("ok"), s3("les");
cout << "s1= " <<s1<< endl; //
cout << "s2= " <<s2 << endl;
cout << "s3= " <<s3 <<endl;
// insert, erase:
cout << "s3: " <<s3.insert(3,s1) << endl; //lesa
cout << "s3: " <<s3.insert(3,s2) <<endl; //lesoka
cout << "s3: " <<s3.erase(5,1) <<endl; //lesok
cout << "s3: " <<s3.insert(5,s1) <<endl; //lesoka
cout << "s3: " <<s3.erase(3,1) <<endl; //leska
// replace:
cout << "s3= " <<s3.replace(1,1,s1, 0,1) <<endl; //laska
string s ("mam");
cout << s.at(1) << endl; //будет выведен символ a
s.at(1)='o'; //символ a заменится на символ o
cout << s.at(1)<< "\n";
_getch();
return 0;
}
Результаты работы программы:
s0= aabb
s01= aabb
s02= ccc
s03= b
s04= abc
s1= a
s2= ok
s3= les
s3: lesa
s3: lesoka
s3: lesok
s3: lesoka
s3: leska
s3= laska
a
o
