
- •Строки стандартного класса string 2
- •Примеры использования методов строк-объектов 5
- •Стандартная библиотека шаблонов 14
- •Шаблонный класс для представления динамических одномерных массивов 35 Строки стандартного класса string
- •Операции
- •Методы класса string
- •Примеры использования методов строк-объектов Примеры работы со строками разных типов
- •Определение строк, присваивание, конкатенация, вычисление длины
- •Ввод-вывод
- •Методы корректировки
- •Доступ к элементу строки, метод at, метод copy
- •Методы сравнения
- •Методы поиска подстроки
- •Выделение подстроки, метод substr
- •Обеспечение ввода символов только из заданного набора
- •Подсчет количества вхождений слова в текст
- •Вывод вопросительных предложений
- •Стандартная библиотека шаблонов
- •Контейнеры
- •Общие методы и операции контейнеров Способы определения объекта для последовательного контейнера
- •Оценка числа элементов и размеров контейнера
- •Сравнение контейнеров
- •Присваивание контейнеров и обмен содержимым
- •Методы частного применения
- •Итераторы
- •Алгоритмы
- •Примеры Использование контейнера vector и его итераторов для вычисления диапазона копирования элементов массива
- •Использование контейнера vector при сортировке строк
- •Использование контейнера vector при считывании чисел из файла
- •Использование контейнера vector при считывании строк из файла
- •Использование контейнера list для реверса последовательности элементов
- •Демонстрация обратного итератора
- •Использование алгоритма find()для поиска заданного числа
- •Использование контейнера list при считывании чисел из файла
- •Использование контейнера list при считывании строк из файла
- •Использование контейнера list и потокового итератора при выводе последовательности структур на экран
- •Использование адаптера stack при считывании чисел из файла
- •Вычисление числа объектов с заданным значением
- •Поиск первого объекта с заданным значением
- •Поиск в массиве строк заданного имени
- •Использование потокового итератора при чтении вещественных чисел с клавиатуры и записи их в файл
- •Использование потокового итератора при чтении чисел из файла и выводе их на экран
- •Шаблонный класс для представления динамических одномерных массивов
Примеры использования методов строк-объектов Примеры работы со строками разных типов
#include <cstring>
#include <string> //строковый класс
int main() {
char c1[80], c2[80], c3[80]; //строки с завершающим нулем
string s1, s2, s3; //строки-объекты
//копирование строк
strcpy(c1,"old string one "); //дает warning C4996 //strcpy_s( string, "Hello world from " ); не дает warning C4996
strcpy (c2, c1); //дает warning C4996
s1 = "new string one ";
s2 = s1;
cout << c1 <<"\n";
cout << c2 <<"\n";
cout << s1 <<"\n";
cout << s2 <<"\n";;
//конкатенация строк
strcpy(c3,c1); //дает warning C4996
strncat (c3,c2,strlen(c2)); //дает warning C4996
// strncat_s( string, "Hello world from " ); не дает warning C4996
s3=s1+s2;
cout << c3 <<"\n";
cout << s3 <<"\n";
//сравнение строк
if (strcmp(c2, c3) <0) cout << c2;
else cout << c3;
cout << "\n";
if (s2 < s3) cout << s2;
else cout << s3;
cout << "\n";
getch();
return 0;
}
Определение строк, присваивание, конкатенация, вычисление длины
#include <string>
int main()
{
string s1("Man"); //определение строки-объекта и ее
//инициализация строкой-массивом
string s2 = "Beast";
string s3; //определение пустой строки
string s4("larlarlar",3); //определение строки-объекта и ее
//инициализация 3-мя символами строки-массива
string s5(10,'.'); //определение строки-объекта и ее
//инициализация строкой-массивом из 10 точек
string s6(s1); //определение строки-объекта s6
//как копии строки-объекта s1
string s7(s2,1,5); //определение строки-объекта s7 и ее
//инициализация 5-ю символами строки s2, начиная с символа 1
s3 = s1; //присваивание
cout << "s3 = " << s3 << endl;
string s0;
s0 = '1'; //строке можно присваивать отдельный символ
s0 = "bbbbbb"; // строку старого стиля
s0 = s2; // другую строку-объект
s3 = "Neither " + s1 + " nor "; //конкатенация
s3 += s2; // конкатенация
cout << "s3 = " << s3 << endl;
s1.swap(s2); //обмен s1 и s2
cout << s1 << "\n" << s2 << endl;
cout << s3 << "\n" << s4 << endl;
cout << s5 << "\n" << s6 << endl;
cout << s7 << endl;
cout << s3.length()<< " " << s3.size() << " " << s3.max_size()<< " " << s3.capacity() << endl;
_getch();
return 0;
}
Результаты работы программы:
s3 = Man
s3 = Neither Man nor Beast
Beast
Man
Neither Man nor Beast
lar
..........
Man
east
21 21 4294967294 31 //сравнить последнее и первое значения для строк разной длины
3 3 4294967294 15 //первое значение – это length()- размер строки
5 5 4294967294 15 //последнее значение – это capacity()- емкость строки
14 14 4294967294 15 //объем памяти, максимальное количество элементов, которое 37 37 4294967294 47 //может вместить строка без дополнительного выделения памяти