Incrível!
Completion taxa melhorada para 4.35single
Desafio: 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
1str.find("text to find")
Retorna o índice do primeiro caractere da primeira ocorrência.
main.cpp
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
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
1str.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
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
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
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
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.
- Utilize
rfind()para encontrar o último símbolo'@'no e-mail. - Compare o resultado de
rfindcom-1para verificar se o símbolo'@'existe. Se não houver'@', retornefalse, pois o e-mail é inválido. - Inicialize uma variável string
domaincomo uma string vazia. - Utilize um laço
forcomeçando deatPos + 1até o tamanho deemailpara iterar sobre os caracteres após o'@'. - Em cada iteração, adicione o caractere à variável
domain. - Se
domainfor igual a"codefinity.com", retornetrue. Caso contrário, retornefalse.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo