Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Búsqueda Dentro de Cadenas | Tipo de Dato de Texto
Tipos de Datos en C++
close
Sección 3. Capítulo 6
single

single

bookDesafío: Búsqueda Dentro de Cadenas

Desliza para mostrar el menú

Método find()

A veces, 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 anterior al índice pos se ignora en la búsqueda.

Aquí tienes un ejemplo de cómo encontrar 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 una constante numérica 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

Swipe to start coding

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 comenzando 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 3. Capítulo 6
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