
- •Строки стандартного класса string 2
- •Примеры использования методов строк-объектов 5
- •Стандартная библиотека шаблонов 14
- •Шаблонный класс для представления динамических одномерных массивов 35 Строки стандартного класса string
- •Операции
- •Методы класса string
- •Примеры использования методов строк-объектов Примеры работы со строками разных типов
- •Определение строк, присваивание, конкатенация, вычисление длины
- •Ввод-вывод
- •Методы корректировки
- •Доступ к элементу строки, метод at, метод copy
- •Методы сравнения
- •Методы поиска подстроки
- •Выделение подстроки, метод substr
- •Обеспечение ввода символов только из заданного набора
- •Подсчет количества вхождений слова в текст
- •Вывод вопросительных предложений
- •Стандартная библиотека шаблонов
- •Контейнеры
- •Общие методы и операции контейнеров Способы определения объекта для последовательного контейнера
- •Оценка числа элементов и размеров контейнера
- •Сравнение контейнеров
- •Присваивание контейнеров и обмен содержимым
- •Методы частного применения
- •Итераторы
- •Алгоритмы
- •Примеры Использование контейнера vector и его итераторов для вычисления диапазона копирования элементов массива
- •Использование контейнера vector при сортировке строк
- •Использование контейнера vector при считывании чисел из файла
- •Использование контейнера vector при считывании строк из файла
- •Использование контейнера list для реверса последовательности элементов
- •Демонстрация обратного итератора
- •Использование алгоритма find()для поиска заданного числа
- •Использование контейнера list при считывании чисел из файла
- •Использование контейнера list при считывании строк из файла
- •Использование контейнера list и потокового итератора при выводе последовательности структур на экран
- •Использование адаптера stack при считывании чисел из файла
- •Вычисление числа объектов с заданным значением
- •Поиск первого объекта с заданным значением
- •Поиск в массиве строк заданного имени
- •Использование потокового итератора при чтении вещественных чисел с клавиатуры и записи их в файл
- •Использование потокового итератора при чтении чисел из файла и выводе их на экран
- •Шаблонный класс для представления динамических одномерных массивов
Доступ к элементу строки, метод at, метод copy
#include <string>
int main()
{
char charray[80];
string word;
cout << "Enter a word: ";
cin >> word;
size_t wlen = word.length(); // size_t – беззнаковый целочисленный тип, //используемый для представления результата операции sizeof, // описан в <stdio.h>: typedef unsigned size_t;
cout << "One character at a time: ";
for(size_t j=0; j<wlen; j++)
{cout << word.at(j); //генерируется исключение //при выходе (j<wlen+10) за длину строки,
cout << word[j]; } //нет предупрежденй //при выходе за длину строки
word.copy(charray, wlen, 0); //копирование строки-объекта в массив
//дает warning C4996 //word._Copy_s( string, "Hello world from " ); не дает warning C4996
charray[wlen] = '\0';
cout << "\nArray contains: " << charray << endl;
_getch();
return 0;
}
Результаты работы программы:
One character at a time: MMaann
Array contains: Man
Методы сравнения
#include <string>
int main()
{
string aName = "George";
string userName;
cout << "Enter your first name: ";
cin >> userName;
if ( ! userName.compare("")) {cout << "pusto" << endl;
return 1;}
if(userName==aName) //operator ==
cout << "Greetings, George\n";
else if(userName < aName) //operator <
cout << "You come before George\n";
else
cout << "You come after George\n";
//или
if (!userName.compare(aName)) cout <<" = ";
else
if (userName.compare(aName)<0) cout <<" < ";
else cout << " > ";
int n = userName.compare(0, 2, aName, 0, 2); //функция compare()
cout << "The first two letters of your name ";
if(n==0)
cout << "match ";
else if(n < 0)
cout << "come before ";
else
cout << "come after ";
cout << aName.substr(0, 2) << endl;
_getch();
return 0;
}
Результаты работы программы:
Enter your first name: George
Greetings, George
The first two letters of your name match Ge
или:
Enter your first name: Ivan
You come after George
The first two letters of your name come after Ge
Методы поиска подстроки
#include <string>
int main()
{
string s1 =
"In Xanadu did Kubla Kahn a stately pleasure dome decree";
size_t n;
n = s1.find("Kubla"); // в строке s1 ищется самое левое // вхождение данной строки
cout << "Found Kubla at " << n << endl;
n = s1.find_first_of("spde"); // в строке s1 ищется //первое вхождение любого из
// символов данной строки
cout << "First of spde at " << n << endl;
n = s1.find_first_not_of("aeiouAEIOU"); //в исходной строке ищется //первое вхождение символа,
//отличного от указанных в данной строке
cout << "First consonent at " << n << endl;
_getch();
return 0;
}
Результаты работы программы:
Found Kubla at 14
First of spde at 7
First consonent at 1