Vista stringa C ++

Vista stringa C ++
Il conteggio dell'indice dei caratteri della stringa inizia da zero (non uno). Una gamma di stringhe è una sequenza continua di caratteri da una stringa letterale. L'intera stringa è una grande gamma. Intervalli più piccoli possono essere ottenuti da una stringa. L'idea di una vista stringa è quella di ottenere una gamma decisa da una stringa, in modo tale che l'intervallo sia come una stringa indipendente il cui primo carattere è a indice zero. Sebbene un oggetto String-View possa stare da solo, è ufficialmente una vista a portata e non può essere modificato di solito.

String View è una classe della propria libreria che dovrebbe essere inclusa in un programma C ++ come segue:

#includere

Ha funzioni membri che sono state classificate nelle seguenti voci: costruzione, capacità, accesso agli elementi, supporto iteratore, modificatori, operazioni di stringa e ricerca. Stranamente, String_View ha modificatori, che è in conflitto con la sua definizione. Ciò è chiarito di seguito in questo tutorial. Tutto il codice di visualizzazione stringa in questo tutorial è nella funzione c ++ main ().

Contenuto dell'articolo

  • Costruzione
  • Capacità
  • Accesso agli elementi
  • Supporto iteratore
  • Modificatori
  • Operazioni di stringa
  • Ricerca
  • Conclusione

Costruzione
base_string_view (const grafico* str)

Questo costruisce una visione della stringa, da un'intera stringa letterale, di costante-pointer-to-characters. Quanto segue, illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (str);
cout <restituzione 0;

L'output è:

uno due tre quattro cinque

Si noti che String_View, anziché BASIC_STRING_VIEW, è stato utilizzato per il nome del costruttore.

base_string_view (const grafico* str, size_type len)

Questa funzione membro Windows i primi caratteri Len dell'argomento della stringa. La finestra non sta copiando. Nessuna copia del costruttore di visione stringa. Si riferiscono solo. Il seguente programma mostra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
cout <restituzione 0;

L'output è:

uno due tre

base_string_view (const basic_string_view &)

Questo costruttore è lo stesso del primo costruttore sopra, ma il suo argomento è un oggetto String_view, che aveva già la sua vista. Il seguente programma illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
string_view strvv (strv);
cout <restituzione 0;

L'output è:

uno due tre

base_string_view & operator = (const basic_string_view &)

Questo costruttore membro è simile a quanto sopra, ma String_View è assegnato e non superato come argomento. Il seguente programma illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
string_view strvv = strv;
cout <restituzione 0;

L'output è:

uno due tre

Capacità
size_type size () const

Ricorda, un String_View è un intervallo di una stringa originale. Non è una copia della gamma. Ha riferimenti agli elementi del personaggio della gamma nella stringa originale. La dimensione di questo String_View (vista finestra) può ancora essere determinata perché String_View è un oggetto istanziato dalla classe String_View. La dimensione viene restituita dalla funzione membro size (). Il seguente programma dimostra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
int sz = strv.misurare();
cout <restituzione 0;

L'output è:

13

bool vuoto () const

Un oggetto String_View può essere creato vuoto, come mostrato nel seguente programma. Quando viene vuota, la funzione membro vuota () restituirà vera; altrimenti restituirà falso. Il programma è:

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

string_view strv;
bool bl = strv.vuoto();
cout <restituzione 0;

L'output è 1, per vero. Si noti che l'oggetto String_View è stato creato senza parentesi e senza alcun argomento.

Accesso agli elementi
const_reference operator [] (size_type pos) const

L'operatore della staffa quadrata può essere utilizzato per leggere un valore (carattere) in String_View. Il seguente programma utilizza un per loop per illustrare questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
per (int i = 0; i cout <cout <restituzione 0;

L'output è:

uno due tre

Nota: un carattere in un oggetto String_view non può essere modificato. Ogni possibile modifica dovrebbe essere eseguita nella stringa originale.

Supporto iteratore
const_iterator inizi () const

Questa funzione membro restituisce un iteratore costante che punta al primo elemento di carattere dell'oggetto String_View. Qui, const_iterator significa che il carattere non può essere modificato. Tuttavia, l'iteratore può essere incrementato per indicare l'elemento del personaggio successivo; oppure aggiungi un intero simile all'aggiunta di un numero intero a un indice per indicare un altro elemento di personaggio davanti. Il seguente programma illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
String_view :: const_iterator IT = strv.inizio();
It ++;
It = It + 4;
cout <<*it <restituzione 0;

L'output è 'w'. Nota in questo modo l'iteratore è stato costruito.

const_iterator end () const

Questa funzione membro restituisce un iteratore costante che punta subito dopo l'ultimo elemento del carattere dell'oggetto String_View. L'iteratore può essere decrementato per indicare l'ultimo elemento del carattere o essere sottratto un numero intero, simile a sottrarre un numero intero da un indice, per indicare un altro elemento di carattere in prima. Qui, const_iterator significa che il carattere non può essere modificato. Il seguente programma illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
String_view :: const_iterator IT = strv.FINE();
Esso--;
It = esso - 4;
cout <<*it <restituzione 0;

L'output è 't'.

Modificatori
void remove_prefix (size_type n)

Questo rimuove una prima sotto-stringa dalla String_View, ma non rimuove alcun carattere dalla stringa originale. Il seguente programma illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
cout <strv.remove_prefix (4);
cout <cout <restituzione 0;

L'output è:

uno due tre
due tre
uno due tre quattro cinque

void remove_suffix (size_type n)

Questo rimuove un'ultima sotto-corda dalla string_view, ma non rimuove alcun carattere dalla stringa originale. Il seguente programma illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
cout <strv.Rimuovi_suffix (6);
cout <cout <restituzione 0;

L'output è:

uno due tre
uno due
uno due tre quattro cinque

Operazioni di stringa
size_type copy (grafico* s, size_type n, size_type pos = 0) const

Questa funzione copia una gamma di caratteri dall'oggetto String_View (non dalla stringa originale) per sostituire la prima sotto-stringa di un'altra stringa. Il seguente programma illustra questo:

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

char strb [] = "aaa bbb ccc ddd eee";
const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
cout <strv.copia (strb, 3, 4);
cout <cout <restituzione 0;

L'output è:

uno due tre
Due BBB CCC DDD EEE
uno due tre quattro cinque

Ci sono due stringhe indipendenti qui. String_view non è una stringa indipendente. È una finestra di gamma di una delle stringhe indipendenti. Si noti che il primo parametro della funzione membro, "grafico* s" indica una matrice di cartoni e non un const-cart* .

int confront (base_string_view s) const

Il numero di caratteri di due String_Views viene confrontato qui. Se quello, usando la funzione membro confronta () è più elevato, viene restituito un numero positivo. Se i numeri sono uguali, allora zero viene restituito. Se l'oggetto String_View che impiega la funzione membro ha un numero inferiore, viene restituito un numero negativo. Il seguente programma illustra questo:

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

const char* strat = "uno due tre quattro cinque";
String_view Strva (Stra, 13);
cout <const char* strb = "aaa bbb ccc ddd eee";
string_view strvb (strb, 11);
cout <int ret = strvb.confronta (strva);
cout <restituzione 0;

L'output è:

uno due tre
AAA BBB CCC
-14, al computer dell'autore.

Ricerca
size_type find (const grafico* s, size_type pos = 0) const

Questa funzione membro cerca il verificarsi della prima sotto-corda, s in String_view in questione. Restituisce l'indice del primo carattere della sotto-corda trovata. Se non trovato, restituisce -1. Il secondo argomento indica dove inizia l'insegnamento (indice predefinito è 0). Il seguente programma illustra questo:

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

const char* str = "uno due tre quattro cinque";
string_view strv (STR, 13);
cout <const char* cs = "due";
int ret = strv.Trova (CS, 0);
cout <restituzione 0;

L'output è:

uno due tre
4

Conclusione

A String_View è una vista finestra di una gamma di una stringa originale. Non è una copia dei personaggi. I personaggi sono citati. C'è una classe di visualizzazione stringa da cui sono istanziati gli oggetti String_View. String-View ha molte funzioni dei membri. Le funzioni di base dei membri delle diverse categorie sono state spiegate sopra.