Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Challenge: Ricerca All'interno Delle Stringhe | Tipo di dato testo
Tipi di Dati in C++
Sezione 3. Capitolo 6
single

single

bookChallenge: 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

find.h

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

Restituisce l'indice del primo carattere della prima corrispondenza.

main.cpp

main.cpp

copy
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

main.cpp

copy
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

rfind.h

copy
1
str.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

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

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

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.

  1. Utilizza rfind() per trovare l'ultima occorrenza del simbolo '@' nell'email.
  2. Confronta il risultato di rfind con -1 per verificare se il simbolo '@' è presente. Se non viene trovato nessun '@', restituisci false perché l'email non è valida.
  3. Inizializza una variabile stringa domain come stringa vuota.
  4. Utilizza un ciclo for che parte da atPos + 1 fino alla lunghezza di email per iterare sui caratteri dopo il simbolo '@'.
  5. In ogni iterazione, aggiungi il carattere alla variabile domain.
  6. Se domain è uguale a "codefinity.com", restituisci true. Altrimenti, restituisci false.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 6
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt