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

single

bookSfida: 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 }

È inoltre possibile specificare la posizione del primo carattere della stringa da considerare nella ricerca. Questo può essere fatto utilizzando l'argomento pos. Tutti i caratteri precedenti all'indice pos vengono ignorati 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 di un testo, .rfind() trova l'ultima occorrenza e sta per 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 semplice 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

Swipe to start coding

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. Utilizzare rfind() per trovare l'ultima occorrenza del simbolo '@' nell'email.
  2. Confrontare il risultato di rfind con -1 per verificare se il simbolo '@' è presente. Se non viene trovato nessun '@', restituire false perché l'email non è valida.
  3. Inizializzare una variabile stringa domain come stringa vuota.
  4. Utilizzare un ciclo for a partire da atPos + 1 fino alla lunghezza di email per iterare sui caratteri dopo il simbolo '@'.
  5. In ogni iterazione, aggiungere il carattere alla variabile domain.
  6. Se domain è uguale a "codefinity.com", restituire true. Altrimenti, restituire 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