Sottostringa C ++ dall'indice a indice

Sottostringa C ++ dall'indice a indice
Una sotto-corda o una sottostringa o un intervallo è solo una parte di una sequenza di caratteri all'interno della stringa letterale. Sapere cosa sia una sottostringa in C ++ non è sufficiente per un programmatore. Il programmatore deve capire come identificare la sottostringa per codice. Il programmatore deve sapere come restituire una sottostringa. Il programmatore deve sapere come eliminare una sottostringa. Il programmatore deve sapere come sostituire una sottostringa dopo la cancellazione.

Una stringa può essere creata in due modi principali: tramite const char* (array-of-chars) o istanziazione dalla classe stringa. Nel caso di istanziazione dalla classe String, la libreria String deve essere inclusa nel programma C ++. Identificare, restituire, eliminare e sostituire una sottostringa in C ++, viene normalmente fatto solo con l'oggetto stringa istanziato dalla classe String.

L'oggetto stringa è una struttura di dati con metodi (funzioni del membro). La sua lista è composta da elementi, in cui ogni elemento ha un personaggio. I valori dell'elenco sono i caratteri. Come un array, ogni carattere dell'oggetto stringa è possibile accedere a un indice. Quindi, una sotto-corda può essere identificata dagli indici: un indice inferiore e un indice più alto. L'intervallo inizia dall'indice inferiore all'indice più alto, escluso l'indice più alto. Il carattere per l'indice più alto non è incluso nell'intervallo e la lunghezza della sotto-corda proviene dal carattere dell'indice inferiore al carattere appena prima di quello dell'indice più alto.

Due iteratori possono anche identificare una sottostringa o una gamma: il primo iteratore è per l'inizio della gamma e l'ultimo iteratore è per il personaggio, che è subito dopo l'ultimo personaggio effettivo (o alla fine della stringa). C'è una semplice relazione tra iteratore e indice - vedi sotto.

Questo articolo spiega cos'è una sottostringa e come identificare, restituire, eliminare e sostituire una sottostringa in C++.

Contenuto dell'articolo

  • Identificare e restituire una sottostringa
  • Relativo a iteratore e indice
  • Eliminazione di una sottostringa
  • Sostituzione di una sottostringa
  • Conclusione

Identificare e restituire una sottostringa

La classe C ++ ha una funzione membro chiamata, substr () per sub-string (). La sintassi è:

Basic_String substr (size_type pos = 0, size_type n = npos) const

Questa funzione restituisce la sottostringa come oggetto stringa. Il primo argomento indica la posizione dell'indice in cui inizia la sottostringa. Il carattere di POS è incluso nella sottostringa. Il secondo argomento dà la lunghezza della sottostringa. La lunghezza è il numero di caratteri che iniziano da pos. Non include il carattere per l'indice più alto. L'indice più alto è: POS + NPO (sebbene la lunghezza, NPOS viene misurato spostato un posto a sinistra). Il conteggio dell'indice inizia da zero. Il seguente programma illustra l'uso di questa funzione membro:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
string str = "one_two_three_four_five";
stringa substrin = str.substr (8, 5);
cout << substrin << endl;
restituzione 0;

L'output è:

tre

Se questi due argomenti sono assenti, viene considerata l'intera stringa, come illustrato nel seguente programma:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
string str = "one_two_three_four_five";
stringa substrin = str.substr ();
cout << substrin << endl;
restituzione 0;

L'output è:

uno due tre quattro cinque

La parola riservata, const alla fine della sintassi, significa che la funzione substr () copia la sotto-corda e la restituisce. Non elimina la sotto-corda.

Relativo a iteratore e indice

Quando un iteratore punta a un carattere, per ottenere l'iteratore per la fine dell'intervallo, basta aggiungere la lunghezza (numero) dei caratteri per l'intervallo e il nuovo iteratore indicherà la fine dell'intervallo. Il personaggio per quest'ultimo iteratore non è incluso nell'intervallo o nella sottostringa. Range e substring qui sono le stesse cose (sono la stessa cosa sopra). Per la funzione membro stringa substr (), NPOS è la lunghezza dell'intervallo.

L'iteratore che corrisponde all'indice zero è:

str.inizio()

Gli NPO possono essere aggiunti a questo iteratore per indicare l'ultimo elemento dell'intervallo. L'ultimo elemento o l'ultimo carattere della gamma non fa parte della sottostringa.

L'iteratore che corrisponde al punto subito dopo l'ultimo carattere della stringa è:

str.FINE()

Gli NPO possono essere sottratti da questo per indicare qualsiasi primo carattere desiderato della stringa.

inizio () e fine () sono funzioni membri della classe stringa.

Eliminazione di una sottostringa

Una sottostringa è identificata in un oggetto stringa, con argomenti, POS e NPO della funzione substr (). Ricordiamo che NPOS è un intervallo. La classe String ha anche una funzione membro chiamata ERASE (). cancella () è in forme sovraccarichi. Una delle funzioni del membro Cancella () sovraccarico identifica la sottostringa con POS e NPO. La sintassi è:

BASIC_STRING & ERASE (size_type pos = 0, size_type n = NPO)

Questa funzione cancella elimina la sottostringa e restituisce la stringa originale con la sottostringe eliminata.

Quindi, per eliminare una sottostringa, la funzione substr () non è necessaria. Sono i suoi argomenti che sono necessari. Per eliminare una sottostringa, utilizzare la funzione Cancella membro dell'oggetto stringa. Per avere una copia della sottostringa, utilizzare semplicemente la funzione substr () prima di cancellare. Il seguente programma mostra un buon modo per eliminare una sottostringa:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
string str = "one_two_three_four_five";
stringa substrin = str.substr (8, 5);
String ret = STR.Cancella (8, 5);
cout <cout <cout <restituzione 0;

L'output è:

tre
one_two__four_five
one_two__four_five

Una sintassi per eliminare una sottostringa con gli argomenti di iteratore è:

Iterator Erase (const_iterator First, const_iterator Last)

Con questo, l'inizio della sottostringa viene identificato per la prima volta dall'iteratore, corrispondente all'indice, POS. Per ottenere la fine della sottostringa, l'iteratore è identificato per ultimo, che si ottiene facendo prima + NPO. La codifica per eliminare una sottostringa utilizzando questa variante di funzione cancella () sovraccarica viene lasciata come esercizio per il lettore.

Sostituzione di una sottostringa

Ciò che veramente identifica una sottostringa sono gli argomenti: POS e NPO. Per restituire una sottostringa, utilizzare la funzione membro della classe String, substr (). Per eliminare una sottostringa, utilizzare la funzione membro della classe String, cancella (). E per sostituire una sottostringa con una lunghezza, utilizzare la funzione membro della classe String, sostituire (). La funzione di sostituzione ha molte varianti sovraccarichi. Quello che utilizza l'indice è:

BASIC_STRING & SPOSTA (size_type POS1, size_type N1, const t & t)

dove POS1 è POS, N1 è NPOS e T è una serie di cartoni da sostituzione indipendente per la sostituzione. Restituisce la stringa originale, inclusa la sostituzione.

Nota: in C ++, una sottostringa non deve essere eliminata (cancellata) prima che venga sostituita.
Il seguente programma mostra un buon modo per sostituire una sottostringa:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
string str = "one_two_three_four_five";
char chs [] = "ccc";
stringa substrin = str.substr (8, 5);
String ret = STR.Sostituire (8, 5, CHS);
cout <cout <cout <restituzione 0;

L'output è:

tre
one_two_ccc_four_five
one_two_ccc_four_five

La sostituzione del codice sopra era di lunghezza inferiore a 5 caratteri. Il seguente programma mostra il caso in cui la sostituzione sia maggiore di 5 caratteri:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
string str = "one_two_three_four_five";
char chs [] = "cccccccc";
stringa substrin = str.substr (8, 5);
String ret = STR.Sostituire (8, 5, CHS);
cout <cout <cout <restituzione 0;
tre
one_two_ccccccccc_four_five
one_two_ccccccccc_four_five

Una sintassi per sostituire una sottostringa con gli argomenti di iteratore è:

BASIC_STRING & SPOSTA (const_iterator I1, const_iterator I2, const t & t)

Con questa sintassi, l'inizio della sottostringa è identificato dall'iteratore, I1, che corrisponde all'indice, POS. Per ottenere la fine della sottostringa, l'iteratore è identificato da I2, che è ottenuto facendo, i1 + NPO. T ha lo stesso significato di sopra. Il seguente programma mostra come utilizzare questa sintassi:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
string str = "one_two_three_four_five";
String :: const_iterator ITB = STR.inizio();
String :: const_iterator itPos = ITB + 8;
string :: const_iterator itnpos = itos + 5;
char chs [] = "ccccc";
stringa substrin = str.substr (8, 5);
String ret = STR.Sostituire (iTpos, itnpos, chs);
cout <cout <cout <restituzione 0;

L'output è:

tre
one_two_ccccc_four_five
one_two_ccccc_four_five

Si noti che gli iteratori utilizzati sono iteratori costanti. L'iteratore che corrisponde all'indice, POS, è ottenuto con ITB + 8. L'iteratore che corrisponde all'indice più alto è ottenuto con ITPO + 5.

Conclusione

Una sotto-corda o una sottostringa o un intervallo è solo una parte di una sequenza di caratteri all'interno di una stringa letterale. Per restituire una sottostringa, utilizzare la funzione membro della classe String, substr (). Per eliminare una sottostringa, utilizzare la funzione membro della classe String, cancella (). Per sostituire una sottostringa, utilizzare la funzione membro della classe String, sostituire (). Per tutte queste funzioni, l'argomento dell'indice, POS e l'intervallo dell'indice, NPOS, sono la chiave per identificare la sottostringa della stringa principale.