Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: Пошук у Рядках | Текстовий Тип Даних
Типи Даних у C++
close
Секція 3. Розділ 6
single

single

bookЗавдання: Пошук у Рядках

Свайпніть щоб показати меню

Метод find()

Іноді виникає потреба знайти певний текст у string. Це можна зробити за допомогою методів .find() або .rfind(). Почнемо з методу .find().

find.h

find.h

copy
1
str.find("text to find")

Повертає індекс першого символу першого збігу.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }

Ви також можете вказати позицію першого символу у рядку, з якої починати пошук. Це можна зробити за допомогою аргументу pos. Усі символи до індексу pos ігноруються під час пошуку.

Ось приклад знаходження першого входження "code", починаючи з третього символу.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }

Метод rfind()

Можна також знайти останнє входження певного тексту за допомогою методу .rfind().

rfind.h

rfind.h

copy
1
str.rfind("text to find")

Метод .find() знаходить перше входження тексту, а .rfind() знаходить останнє входження та означає зворотний пошук.

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
Note
Примітка

Якщо .find() або .rfind() не можуть знайти підрядок, вони повертають string::npos. Це числова константа, що позначає некоректну позицію. Вона зберігається як найбільше можливе значення типу size_t, що дозволяє легко виявити невдалі пошуки.

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
Завдання

Swipe to start coding

Ви створюєте простий фільтр електронної пошти. Ваша мета — дозволити користувачам реєструватися з будь-якою електронною адресою та позначати листи з codefinity.com як дозволені.

Функція isAllowedEmail приймає email як string.

  1. Використайте rfind(), щоб знайти останній символ '@' у електронній адресі.
  2. Порівняйте результат rfind з -1, щоб перевірити наявність символу '@'. Якщо '@' не знайдено, поверніть false, оскільки електронна адреса недійсна.
  3. Ініціалізуйте змінну типу string з іменем domain як порожній рядок.
  4. Використайте цикл for, починаючи з atPos + 1 до довжини email, щоб перебрати символи після '@'.
  5. На кожній ітерації додавайте символ до змінної domain.
  6. Якщо domain дорівнює "codefinity.com", поверніть true. Інакше поверніть false.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 6
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt