Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Busca Dentro de Strings | Tipo de Dado de Texto
Practice
Projects
Quizzes & Challenges
Questionários
Challenges
/
Tipos de Dados em C++
close
Seção 3. Capítulo 6
single

single

bookDesafio: Busca Dentro de Strings

Deslize para mostrar o menu

Método find()

Às vezes, pode ser necessário buscar um texto específico dentro de uma string. Isso pode ser feito utilizando os métodos .find() ou .rfind(). Vamos começar pelo método .find().

find.h

find.h

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

Retorna o índice do primeiro caractere da primeira ocorrência.

main.cpp

main.cpp

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

Você também pode especificar a posição do primeiro caractere na string a ser considerada na busca. Isso pode ser feito usando o argumento pos. Quaisquer caracteres antes do índice pos são ignorados na busca.

Aqui está um exemplo de como encontrar o primeiro "code" a partir do terceiro caractere.

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 }

Método rfind()

Também é possível localizar a última ocorrência de um texto utilizando o método .rfind().

rfind.h

rfind.h

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

Enquanto .find() recupera a primeira ocorrência de um texto, .rfind() encontra a última ocorrência e significa reverse find (busca reversa).

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
Nota

Quando .find() ou .rfind() não conseguem localizar a substring, retornam string::npos. Este é um constante numérico que representa uma posição inválida. É armazenado como o maior valor possível de size_t, o que facilita a detecção de buscas sem sucesso.

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; }
Tarefa

Swipe to start coding

Você está desenvolvendo um filtro de e-mails simples. Seu objetivo é permitir que usuários se cadastrem com qualquer e-mail e marcar e-mails de codefinity.com como permitidos.

A função isAllowedEmail recebe um email como string.

  1. Utilize rfind() para encontrar o último símbolo '@' no e-mail.
  2. Compare o resultado de rfind com -1 para verificar se o símbolo '@' existe. Se não houver '@', retorne false, pois o e-mail é inválido.
  3. Inicialize uma variável string domain como uma string vazia.
  4. Utilize um laço for começando de atPos + 1 até o tamanho de email para iterar sobre os caracteres após o '@'.
  5. Em cada iteração, adicione o caractere à variável domain.
  6. Se domain for igual a "codefinity.com", retorne true. Caso contrário, retorne false.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt