Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Challenge: Búsqueda Dentro de Cadenas | Section
Tipos de Datos en C++
Sección 1. Capítulo 11
single

single

bookChallenge: Búsqueda Dentro de Cadenas

Desliza para mostrar el menú

Método find()

En ocasiones, es necesario buscar un texto específico dentro de un string. Esto se puede realizar utilizando los métodos .find() o .rfind(). Comencemos con el método .find().

find.h

find.h

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

Devuelve el índice del primer carácter de la primera coincidencia.

main.cpp

main.cpp

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

También se puede especificar la posición del primer carácter en la cadena que se debe considerar en la búsqueda. Esto se realiza utilizando el argumento pos. Cualquier carácter antes del índice pos se ignora en la búsqueda.

Ejemplo de búsqueda de la primera aparición de "code" comenzando desde el tercer carácter.

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()

También es posible localizar la última aparición de un texto utilizando el método .rfind().

rfind.h

rfind.h

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

Mientras que .find() recupera la primera aparición de un texto, .rfind() encuentra la última aparición y significa búsqueda inversa.

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

Cuando .find() o .rfind() no pueden localizar la subcadena, devuelven string::npos. Este es un constante numérico que representa una posición no válida. Se almacena como el valor más grande posible de size_t, lo que facilita la detección de búsquedas fallidas.

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

Desliza para comenzar a programar

Estás desarrollando un filtro de correo electrónico simple. Tu objetivo es permitir que los usuarios se registren con cualquier correo electrónico y marcar los correos de codefinity.com como permitidos.

La función isAllowedEmail recibe un email como string.

  1. Utiliza rfind() para encontrar el último símbolo '@' en el correo electrónico.
  2. Compara el resultado de rfind con -1 para verificar si existe el símbolo '@'. Si no se encuentra ningún '@', devuelve false porque el correo electrónico no es válido.
  3. Inicializa una variable de tipo string llamada domain como una cadena vacía.
  4. Utiliza un bucle for que comience desde atPos + 1 hasta la longitud de email para iterar sobre los caracteres después del '@'.
  5. En cada iteración, agrega el carácter a la variable domain.
  6. Si domain es igual a "codefinity.com", devuelve true. De lo contrario, devuelve false.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 11
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt