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