Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Challenge: Searching Within Strings | Section
Типи Даних C++
Секція 1. Розділ 11
single

single

bookChallenge: Searching Within Strings

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

Метод 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; }
Завдання

Проведіть, щоб почати кодувати

Ви створюєте простий фільтр електронної пошти. Ваша мета — дозволити користувачам реєструватися з будь-якою електронною адресою та позначати листи з 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Перейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

Секція 1. Розділ 11
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt