C ++ String Find_first_OF

C ++ String Find_first_OF

In c ++ find_first_of, come riguarda una stringa target, significa: trova la prima occorrenza di una sequenza di caratteri, nella stringa di destinazione. Una particolare sotto-corda può verificarsi più di una volta. Quindi, il lavoro del funzione find_first_of () è trovare la prima occorrenza di quella particolare sotto-corda nella stringa di destinazione.

Considera la stringa,

"Non è mai più detto mai più."

Il primo personaggio, 'i' è a indice zero. Il secondo, "t" è all'indice 1; Il terzo, che è uno spazio, è all'indice 2; Il quarto, 'I' è all'indice 3; e così via. "Mai" si verifica due volte nella stringa letterale. 'n' per il primo "mai" si verifica all'indice 11. 'n' per il secondo "mai" si verifica a un indice più alto. Quindi, la prima occorrenza di "mai" inizia da indice 11.

La stringa sopra deve essere l'elenco di un oggetto stringa costruito da una classe stringa. Un programma C ++ per utilizzare la funzione C ++ find_first_of () dovrebbe iniziare:

#includere
#includere
Utilizzo dello spazio dei nomi std;

La libreria String è inclusa. find_first_of () è una funzione membro della classe String. Tutto il codice per la stringa per questo articolo viene eseguito nella funzione principale ().

Ci sono cinque varianti del funzione find_first_of (). Quando esiste più di una variante di una funzione, si dice che la funzione sia sovraccarica. Questo articolo spiega come usare il sovraccarico find_first_of () funzioni del membro.

size_type find_first_of (grafico C, size_type pos = 0)

Questa funzione restituisce l'indice della prima occorrenza di un particolare carattere (sotto-corda di un carattere) nella stringa target. Il primo parametro si riferisce al carattere. Il secondo parametro indica che la ricerca inizia dall'indice 0 (impostazione predefinita). La costruzione (istanza) dell'oggetto stringa di destinazione può essere:

String str = "Non è mai più detto mai più.";

Lascia che il personaggio venga cercato, sii 'n'. 'n' si verifica più di una volta. In questo caso, la posizione restituita è 11, poiché la prima 'n' è all'indice 11.

Il seguente codice illustra l'uso di questa funzione, in cui l'argomento per il primo parametro è un identificatore:

String str = "Non è mai più detto mai più.";
char ss = 'n';
int i = str.find_first_of (ss);
cout << i << endl;

L'output è 11.

Il secondo parametro, "size_type pos = 0" nella funzione significa che la ricerca inizia da zero. Se la ricerca dovesse iniziare da un indice dopo il primo 'n', allora l'indice per il secondo 'n', sarebbe stato restituito. Il seguente programma lo illustra con il primo argomento che è un letterale.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
int i = str.find_first_of ('n', 17);
cout << i << endl;
restituzione 0;

L'output è 21.

size_type find_first_of (const grafico* s, size_type pos = 0)

Questa funzione restituisce l'indice per il primo carattere della prima occorrenza di una particolare sotto-corda (sequenza di caratteri) nella stringa di destinazione. Il primo parametro si riferisce a un puntatore costante della sequenza dei caratteri (sotto-corda). Il secondo parametro indica che la ricerca inizia dall'indice 0 (impostazione predefinita, quando il parametro è assente). L'output del seguente programma è 11, con la ricerca a partire da zero:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
const char* ss = "mai";
int i = str.find_first_of (ss);
cout << i << endl;
restituzione 0;

size_type find_first_of (const t & t, size_type pos = 0)

Questa funzione restituisce l'indice per il primo carattere della prima occorrenza di una particolare sotto-corda (sequenza di caratteri), nella stringa di destinazione. Il primo parametro si riferisce a una matrice di cariche. Il secondo parametro indica che la ricerca inizia dall'indice 0 per impostazione predefinita. L'output del seguente programma è 11, con la ricerca a partire da zero:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
char ss [] = "mai";
int i = str.find_first_of (ss);
cout << i << endl;
restituzione 0;

L'output è 11. La dichiarazione,

char ss [] = "mai";
avrebbe potuto anche essere,
char ss [] = 'n', 'e', ​​'v', 'e', ​​'r', '\ 0';

Nota il carattere NUL, '\ 0' e la sua posizione. Il letterale, 'n', 'e', ​​'v', 'e', ​​'r', '\ 0' può essere utilizzato nel codice al posto delle identificazioni, come nel seguente programma:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
int i = str.find_first_of ('n', 'e', ​​'v', 'e', ​​'r', '\ 0');
cout << i << endl;
restituzione 0;

L'output è ancora 11, come dovrebbe.

size_type find_first_of (const basic_string & str, size_type pos = 0)

Questa funzione è simile a quella sopra, ma il primo argomento è un oggetto stringa costruito dalla classe stringa. Nel seguente programma, il primo argomento è l'identificatore di un oggetto stringa costruito dalla classe stringa (la ricerca inizia da zero):

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
stringa ss = "mai";
int i = str.find_first_of (ss);
cout << i << endl;
restituzione 0;

L'output è 11. L'argomento avrebbe potuto essere la costruzione di stringhe, io.e. stringa ("mai") ​​come in:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
int i = str.find_first_of (string ("mai"));
cout << i << endl;
restituzione 0;

L'output è 11 qui. Ricorda che un oggetto stringa può ancora essere costruito come segue:

stringa ss = "mai";

Quindi, per questa funzione, il primo argomento può essere ancora un letterale della stringa, come nel seguente programma:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
int i = str.find_first_of ("mai");
cout << i << endl;
restituzione 0;

L'output è 11.

size_type find_first_of (const grafico* s, size_type pos, size_type n)

Questa funzione è simile a quella sopra. Se il terzo argomento è inferiore o uguale alla dimensione della sotto-corda ma maggiore di 0, la funzione restituisce il numero previsto. Il seguente codice dimostra l'uso del terzo argomento:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
int i = str.find_first_of ("mai", 17, 4);
cout << i << endl;
restituzione 0;

L'output è 21.

Sequenza non trovata

Cosa succede se la sotto-corda non viene trovata? Considera il seguente programma:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
int i = str.find_first_of ("bcdfu");
cout << i << endl;
restituzione 0;

L'output è -1. Se la sequenza (sotto -stringa) non ha carattere nella stringa di destinazione, il valore di ritorno della funzione è -1. Se la sequenza è la stringa vuota, il valore di ritorno è ancora -1.

Considera la sequenza,

"Uehydyw"

E la stringa di destinazione,

“Non è mai più detto mai più."

'H' nella sotto-corda, è il primo carattere nella sotto-corda che si verifica prima nella stringa di destinazione. Si verifica all'indice 7 nella stringa di destinazione.

Quindi, l'indice che viene restituito dalla stringa target, è il primo carattere della sotto-corda che corrisponde al primo occorrenza di se stesso nella stringa di destinazione. Il seguente programma illustra questo:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Non è mai più detto mai più.";
int i = str.find_first_of ("uehydyw");
cout << i << endl;
restituzione 0;

L'output è 7.

E se la sequenza di caratteri è più lunga della stringa di destinazione? Considera il seguente programma:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Abcde";
int i = str.find_first_of ("abcdefghijk");
cout << i << endl;
restituzione 0;

L'output è 0. Questo perché la stringa target è in realtà la prima sequenza di caratteri della sequenza (sotto-corda). E se la sequenza fosse più lunga della stringa target e non esiste alcun carattere della sequenza nella stringa target? Considera quanto segue:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

String str = "Abcde";
int i = str.find_first_of ("fghijklmnop");
cout << i << endl;
restituzione 0;

L'output è -1, ancora in conformità con il fatto che, se la sequenza non si trova nella stringa di destinazione, il valore di ritorno della funzione sarebbe -1.

Conclusione

find_first_of () è una funzione membro della classe String. Restituisce l'indice della prima occorrenza di una sequenza di caratteri trovati in una stringa target. Il conteggio dell'indice inizia da 0. Questa sequenza può essere chiamata sotto-corda. Se non viene trovata una sequenza, -1 viene restituita. IL find_first_of () La funzione membro è sovraccarica in cinque modi. Le diverse funzioni sovraccarichi prendono diversi formati di sequenza di caratteri. Per tutte queste funzioni sovraccaricate, la ricerca a partire da 0 è il valore predefinito. Tuttavia, ognuno ha un argomento che può consentire alla ricerca di iniziare da qualsiasi indice in anticipo.