Сравнение строк
Объекты класса string можно сравнивать, используя перегруженные операции или метод compare(). Равными считаются полностью идентичные строки; меньшей считается та, что стоит раньше в алфавитном порядке.
Пример 20.6. Сравнение строк с помощью перегруженных операций.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{ setlocale(LC_ALL,"Russian");
string str1, str2;
cout << "Введите строку str1: ";
cin >> str1;
cout << "Введите строку str2: ";
cin >> str2;
if (str1 == str2) cout << "Строки равны" << endl;
if (str1 != str2) cout << "Строки не равны: ";
if (str1 > str2) cout << "строка str1 больше строки str2" << endl;
if (str1 < str2) cout << "строка str1 меньше строки str2" << endl;
_getch();
return 0;
}
Перегруженные операции сравнения вызывают метод compare() шаблона basic_string, поддерживающий дополнительные параметры, которые можно использовать для сравнения подстрок.
Контрольные вопросы
-
Из чего состоит ядро библиотеки стандартных шаблонов?
-
Дайте определения контейнеров, алгоритмов, итераторов, функциональных объектов.
-
Что представляет собой контейнерный класс?
-
Перечислите методы, общие для всех контейнеров.
-
Как осуществляется ввод и вывод строк?
-
Перечислите:
-
методы поиска подстрок и отдельных символов в строке
-
методы модификации строки.
Варианты заданий
Таблица 20.7
Номер варианта |
Задание |
1, 15 |
В векторе целого типа заменить максимальный элемент суммой предыдущих элементов, минимальный – суммой последующих элементов. |
2, 16 |
В конец вектора целого типа дописать четные элементы этого вектора |
3, 17 |
В начало вектора целого типа дописать нечетные элементы этого вектора. |
4, 18 |
В середину вектора целого типа поместить элементы этого вектора, кратные пяти. |
5, 19 |
В начало вектора целого типа дописать его минимальное значение, в середину – максимальное. |
6, 20 |
В начало вектора целого типа записать элементы, являющиеся делителями максимального элемента этого файла. |
7, 21 |
В середину вектора целого типа записать элементы этого файла, меньшие числа, введенного с клавиатуры. |
8, 22 |
Дан вектор с положительными и отрицательными целыми числами. Записать в другой файл сначала отрицательные элементы, а затем положительные. |
9, 23 |
Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая удаляет из списка за каждым вхождением элемента Е, значение которого введено с клавиатуры, один элемент, если такой есть и он отличен от Е. |
10, 24 |
Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая формирует список М1 – копию списка М и список М2, представляющий собой ”перевернутый” список М. |
11, 25 |
Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая включает в упорядоченный по убыванию список новое значение, введенное с клавиатуры, таким образом, чтобы не нарушать упорядоченность. |
12, 26 |
Сформировать динамический список, считая, что длина списка (количество элементов) задана. Описать функцию, которая объединяет два упорядоченных по невозрастанию списка в один упорядоченный по невозрастанию список. |
13, 27 |
Найти сумму элементов вектора целого типа, находящихся между минимальным и максимальным элементами, включая и сами эти числа. |
14, 28 |
Сформировать динамический список, считая, что длина списка (количество элементов) задана. В составе программы описать функцию, которая в списке из каждой группы подряд идущих одинаковых элементов составляет только один.. |
Таблица 20.8
Номер варианта |
Задание |
1, 16 |
Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова "and" запятую. Определите, сколько в строке симметричных слов. |
2, 17 |
Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова "no" запятую. Подсчитайте количество подстрок между запятыми. Определите, сколько слов в строке, у которой первая буква содержится в слове более одного раза. |
3, 18 |
Дана строка слов. Сформируйте новую строку, удалив пробелы, с которых может начинаться строка, а каждую внутреннюю группу пробелов замените одним пробелом. Подсчитайте количество слов в данной строке и количество слов, у которых первая и последняя буквы совпадают. |
4, 19 |
Дана строка слов, разделенных пробелами. Определите количество слов, которые встречаются более одного раза. Сформируйте строку из неповторяющихся слов. |
5, 20 |
Дана строка слов, разделенных пробелами. Сформируйте строку из неповторяющихся слов, расположив их в алфавитном порядке. |
6, 21 |
Дана строка слов, разделенных пробелами, запятыми, точками. Сформируйте новую строку из пяти самых длинных слов. Определите количество слов, начинающихся первой буквой алфавита (русского или латинского). |
7, 22 |
Дана строка символов и некоторый символ n. Сформируйте новую строку, вставив после каждого вхождения символа n пробел. Подсчитайте количество различных слов в образовавшейся строке. |
8, 23 |
Дана строка символов и некоторый символ n. Сформируйте новую строку, вставив после каждого вхождения символа n запятую. Определите самое большое слово в строке. |
9, 24 |
Дана строка слов, разделенных пробелами и запятыми. Подсчитайте количество подстрок (заключенных между запятыми) в строке. Определите длину самого короткого слова. |
10, 25 |
Дана строка слов, разделенных пробелами и запятыми. Подсчитайте количество слов в строке и сформируйте новую строку из самых длинных слов подстрок (заключенных между запятыми). |
11, 26 |
Дана строка символов, представляющих собой арифметическое выражение. Порядок операций определен слева направо. Подсчитайте результат данного выражения. |
12, 27 |
Дана строка слов, разделенных пробелами. Сформируйте новую строку, заменив каждую группу внутренних пробелов одним пробелом. Оставьте в строке только первые вхождения слов. Определите самое короткое слово. |
13, 28 |
Дана строка слов, разделенных пробелами, запятыми, точками. Сформируйте новую строку из трех самых коротких слов. Определите количество слов, заканчивающихся последней буквой алфавита (русского или латинского ). |
14, 29 |
Дана строка слов. Сформируйте новую строку, вставив перед каждым из слов "а" и "но" запятую. Подсчитайте количество подстрок, разделенных запятыми. Сформируйте строку из слов, с которых начинаются подстроки. |
15, 30 |
Дана строка слов. Сформируйте новую строку, вставив перед каждым из слов "а" и "но" запятую. Определите самую короткую подстроку и слово, с которого она начинается. |