single
Challenge: Ricerca All'interno Delle Stringhe
Scorri per mostrare il menu
Metodo find()
A volte può essere necessario cercare un testo specifico all'interno di una string. Questo può essere fatto utilizzando i metodi .find() o .rfind(). Iniziamo con il metodo .find().
find.h
1str.find("text to find")
Restituisce l'indice del primo carattere della prima corrispondenza.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }
È anche possibile specificare la posizione del primo carattere nella stringa da considerare nella ricerca. Questo può essere fatto utilizzando l'argomento pos. Qualsiasi carattere prima dell'indice pos viene ignorato durante la ricerca.
Ecco un esempio di ricerca della prima occorrenza di "code" a partire dal terzo carattere.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }
Metodo rfind()
È possibile individuare anche l'ultima occorrenza di un testo utilizzando il metodo .rfind().
rfind.h
1str.rfind("text to find")
Mentre .find() recupera la prima occorrenza del testo, .rfind() trova l'ultima occorrenza e significa reverse find (ricerca inversa).
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() o .rfind() non riescono a individuare la sottostringa, restituiscono string::npos. Questo è una costante numerica che rappresenta una posizione non valida. È memorizzata come il valore massimo possibile di size_t, il che rende facile rilevare le ricerche non riuscite.
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; }
Scorri per iniziare a programmare
Stai creando un semplice filtro email. L'obiettivo è consentire agli utenti di registrarsi con qualsiasi email e contrassegnare come consentite le email provenienti da codefinity.com.
La funzione isAllowedEmail accetta un parametro email di tipo string.
- Utilizza
rfind()per trovare l'ultima occorrenza del simbolo'@'nell'email. - Confronta il risultato di
rfindcon-1per verificare se il simbolo'@'è presente. Se non viene trovato nessun'@', restituiscifalseperché l'email non è valida. - Inizializza una variabile stringa
domaincome stringa vuota. - Utilizza un ciclo
forche parte daatPos + 1fino alla lunghezza diemailper iterare sui caratteri dopo il simbolo'@'. - In ogni iterazione, aggiungi il carattere alla variabile
domain. - Se
domainè uguale a"codefinity.com", restituiscitrue. Altrimenti, restituiscifalse.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione