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
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.