Можно и нужно стандартную библиотеку языка C++ STL (Standard template library).
Для прочтения рекомендуется следующий раздел сайта www.cppreference.com.
Строки можно считывать двумя способами: до пробельного символа (пробела,
конца строки, символа табуляции) при помощи конструкции cin >> S, и до конца
строки при помощи функции getline(cin, S).
Со строками можно выполнять следующие арифметические операции:
= - присваивание значения.
+= - добавление в конец строки другой строки или символа.
+ - конкатенация двух строк, конкатенация строки и символа.
==, != - посимвольное сравнение.
<, >, <=, >= - лексикографическое сравнение.
Подробней об операторах для строк читайте здесь.
Строки можно создавать с использованием следующих конструкторов:
string() - конструктор по умолчанию (без параметров) создает пустую строку.
string(string & S) - копия строки S
string(int n, char c) - повторение символа c заданное число n раз.
string(char c) - строка из одного символа c.
string(string & S, int start, int len) - строка, содержащая не более, чем len
символов данной строки S, начиная с символа номер start.
Конструкторы можно вызывать явно, например, так:
S += string(10, 'z');
В этом примере явно вызывается конструктор string для создания строки, состоящей из 10 символов
'z'.
Неявно конструктор вызывается при объявлении строки с указанием дополнительных параметров. Например, так:
string S(10, 'z');
Подробней о конструкторах для строк читайте здесь.
Методом называется функция, которая применяется к объекту, например, строке.
При вызове метода его имя пишется после идентификатора объекта через точку, например,
у объекта типа string есть метод size, возвращающий длину строки.
Если S — это строка, то метод вызывается так: S.size(). Другой пример:
метод substr возвращает подстроку заданной строки:
string S = "Hello, world!"; cout << S.substr(6, 5) << endl;
В данном случае будет выведен текст world.
Вот список полезных методов, применяемых к строкам:
| append | добавляет строку или символы к строке |
| assign | присваивает строке значение строк символов или других строк C++ |
| clear | удаляет все символы из строки |
| compare | сравнивает две строки |
| empty | возвращает true если в строке нет символов |
| erase | удаляет символы из строки |
| find | ищет символы в строке |
| find_first_not_of | находит первый символ, отличный от |
| find_first_of | находит первый символ схожий с |
| find_last_not_of | находит последний символ, отличный от |
| find_last_of | находит последний символ, схожий с |
| insert | вставляет символы в строку |
| length | возвращает длину строки |
| npos | специальное значение, означающее «не найдено» или «все оставшиеся символы» |
| push_back | добавляет символ в конец строки |
| replace | заменяет символы в строке |
| resize | меняет размер строки |
| rfind | находит последнее вхождение подстроки |
| size | возвращает количество символов в строке |
| substr | возвращает определённую подстроку |
| swap | меняет две строки содержимым |
Для обозначения того, что запрашиваемая последовательность символов не найдена, многие методы (например,
find) возвращают специальную константу string::npos.
Дана строка (считывается при помощи getline). Если в этой строке есть символ @,
то выведите YES, иначе выведите NO.
Используйте метод find, для поиска символа в строке.
| Ввод | Вывод |
|---|---|
email@179.ru |
YES |
Дана строка (считывается при помощи getline). Если в этой строке есть заглавная или строчная гласная буква
(A, O, I, U, E, Y) то выведите YES, иначе выведите NO.
Используйте метод find_first_of, для поиска гласной в данной строке.
| Ввод | Вывод |
|---|---|
Hmmm... |
NO |
Подсчитайте, сколько раз в данной строке встречается символ @.
Указание: используйте метод find, запоминая последнюю позицию найденного символа @
и продолжая поиск только с этой позиции. Подсчитывайте количество успешно завершенных
поисков.
Примечание: решения, в которых на каждом шаге метод find вызывается дважды, приниматься не будут.
| Ввод | Вывод |
|---|---|
email@179.ru |
1 |
Подсчитайте количество заглавных и строчных гласных букв в данной строке.
Воспользуйтесь предыдущей задачей, заменив метод find на find_first_of.
| Ввод | Вывод |
|---|---|
We All Live In The Yellow Submarine! |
13 |
Даны две строки (с пробелами). Выведите YES, если вторая
строка встречается внутри первой, иначе выведите NO.
| Ввод | Вывод |
|---|---|
We All Live In The Yellow Submarine |
YES |
Даны две строки. Подсчитайте, сколько раз вторая строка встречается в первой, как ее подстрока. “Пересекающиеся” вхождения считаются несколько раз.
| Ввод | Вывод |
|---|---|
ABABA |
2 |
Даны две строки. Определите, можно ли из первой строки удалить несколько символов так, чтобы получилась вторая строка. Выведите YES или NO.
| Ввод | Вывод |
|---|---|
Program |
YES |
Program |
NO |
После запятой в тексте должен строять пробел. Дана строка, вставкой пробелов в неё добейтесь выполнения этого правила. Не надо вставлять пробел, если он там уже есть.
| Ввод | Вывод |
|---|---|
Question of Life,The Universe, and Everything |
Question of Life, The Universe, and Everything |
Дана строка. Продублируйте в ней все гласные буквы.
| Ввод | Вывод |
|---|---|
Question of Life, The Universe, and Everything |
Quueestiioon oof Liifee, Thee UUniiveersee, aand EEveeryythiing |
Дана строка (считывается при помощи getline). Удалите из нее все символы @,
находя их при помощи метода find и удаляя их при помощи метода erase.
Не забывайте, что поиск нужно продолжать с места последнего нахождения данного символа, а не с начала строки!
| Ввод | Вывод |
|---|---|
Bilbo.Baggins@bagend.hobbiton.shire.me |
Bilbo.Bagginsbagend.hobbiton.shire.me |
Удалите из заданной строки все гласные буквы.
| Ввод | Вывод |
|---|---|
We All Live In The Yellow Submarine! |
W ll Lv n Th llw Sbmrn! |
Даны две строки. Удалите из первой строки все вхождения данного слова. После удаления слова поиск следующего вхождения начинается со следующего символа за удаленным словом (то есть если в результате удаления слова образуется еще одно такое же слово, то его удалять не надо).
| Ввод | Вывод |
|---|---|
AABCBC |
ABC |