Die String View ist eine Klasse einer eigenen Bibliothek, die wie folgt in ein C ++ - Programm aufgenommen werden sollte:
#enthalten
Es verfügt über Mitgliedsfunktionen, die unter folgenden Überschriften eingeteilt wurden: Konstruktion, Kapazität, Elementzugriff, Iteratorunterstützung, Modifikatoren, String -Operationen und Suche. Seltsamerweise hat String_View Modifikatoren, die mit seiner Definition in Konflikt stehen. Das wird unten in diesem Tutorial geklärt. Der gesamte String -View -Code in diesem Tutorial befindet sich in der Funktion c ++ main ().
Artikelinhalt
Konstruktion
Basic_string_view (const chart* str)
Dadurch konstruiert ein String-View aus einem ganzen String-Literal von konstantem Zeigungs-zu-Charakter. Das Folgende veranschaulicht dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str);
Cout <Rückkehr 0;
Die Ausgabe ist:
eins zwei drei vier fünf
Beachten Sie, dass String_View anstelle von Basic_string_view für den Konstruktoramen verwendet wurde.
BASIC_STRING_VIEW (const Diagramm* str, size_type len)
Diese Mitgliedsfunktion Windows Die ersten Len -Zeichen des String -Arguments. Das Fenster kopiert nicht. Keine Kopien von String-View-Konstruktor-Kopien. Sie verweisen nur. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
Cout <Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
Basic_string_view (const Basic_string_view &)
Dieser Konstruktor ist der gleiche wie der erste Konstruktor oben, aber sein Argument ist ein String_view -Objekt, das bereits seine Ansicht hatte. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
string_view strvv (strv);
Cout <Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
Basic_string_view & operator = (const Basic_string_view &)
Dieser Mitgliedskonstruktor ähnelt dem oben, aber die String_View wird zugewiesen und nicht als Argument übergeben. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
string_view strvv = strv;
Cout <Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
Kapazität
size_type size () const
Denken Sie daran, eine String_View ist eine Bereichen von einer Originalzeichenfolge aus. Es ist keine Kopie des Bereichs. Es hat Verweise auf die Charakterelemente des Bereichs in der ursprünglichen Zeichenfolge. Die Größe dieser String_View (Fensteransicht) kann weiterhin bestimmt werden. Die Größe wird von der Member -Funktion der Größe () zurückgegeben. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
int sz = strv.Größe();
Cout <Rückkehr 0;
Die Ausgabe ist:
13
bool leer () const
Ein String_View -Objekt kann leer erstellt werden, wie im folgenden Programm gezeigt. Wenn die leere () Mitgliedsfunktion leer ist, wird wahr zurückgegeben. Andernfalls wird falsch zurückgegeben. Das Programm ist:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
string_view strv;
bool BL = strv.leer();
Cout <Rückkehr 0;
Die Ausgabe ist 1 für wahr. Beachten Sie, dass das Objekt String_view ohne Klammern und ohne Argument erstellt wurde.
Elementzugriff
const_referenzoperator [] (size_type pos) const
Der quadratische Halterungsoperator kann verwendet werden, um einen Wert (Zeichen) in der String_view zu lesen. Das folgende Programm verwendet eine For-Schleife, um dies zu veranschaulichen:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
für (int i = 0; iCout < Cout < Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
Hinweis: Ein Zeichen in einem String_View -Objekt kann nicht geändert werden. Eine mögliche Änderung sollte im ursprünglichen Zeichenfolge vorgenommen werden.
Iteratorunterstützung
const_iterator begin () const
Diese Mitgliedsfunktion gibt einen konstanten Iterator zurück, der auf das erste Zeichenelement des Objekts string_view zeigt. Hier bedeutet Const_iterator, dass das Zeichen nicht geändert werden kann. Der Iterator kann jedoch erhöht werden, um auf das nächste Zeichenelement zu verweisen. Oder fügen Sie eine Ganzzahl hinzu, die dem Hinzufügen einer Ganzzahl zu einem Index ähnelt, um auf ein anderes Zeichenelement zu verweisen. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
string_view :: const_iterator it = strv.Start();
es ++;
es = es + 4;
Cout <<*it <Rückkehr 0;
Die Ausgabe ist 'w'. Beachten Sie auf diese Weise, wie der Iterator konstruiert wurde.
const_iterator end () const
Diese Mitgliedsfunktion gibt einen konstanten Iterator zurück, der kurz nach dem letzten Zeichenelement des STRING_VIEW -Objekts zeigt. Der Iterator kann dekrementiert werden, um auf das letzte Charakterelement zu verweisen oder eine Ganzzahl zu subtrahieren, ähnlich, um eine Ganzzahl von einem Index zu subtrahieren. Hier bedeutet Const_iterator, dass das Zeichen nicht geändert werden kann. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
string_view :: const_iterator it = strv.Ende();
Es--;
es = es - 4;
Cout <<*it <Rückkehr 0;
Die Ausgabe ist 't'.
Modifikatoren
void remove_prefix (size_type n)
Dadurch wird ein erstes Unterstring aus der String_View entfernt, jedoch kein Zeichen aus der ursprünglichen Zeichenfolge entfernt. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
Cout <Strv.REME_PREFIX (4);
Cout <Cout < Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
zwei drei
eins zwei drei vier fünf
void remove_suffix (size_type n)
Dadurch wird ein letzter Unterstring aus der String_View entfernt, aber kein Zeichen aus der ursprünglichen Zeichenfolge entfernt. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
Cout <Strv.REMED_SUFFIX (6);
Cout <Cout < Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
eins zwei
eins zwei drei vier fünf
Stringoperationen
size_type copy (chart* s, size_type n, size_type pos = 0) const
Diese Funktion kopiert einen Zeichenbereich aus dem Objekt String_view (nicht der ursprünglichen Zeichenfolge), um die erste Unterstriche einer anderen Zeichenfolge zu ersetzen. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
char strb [] = "aaa bbb ccc ddd eee";
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
Cout <Strv.Kopie (strb, 3, 4);
Cout <Cout < Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
Zwei BBB CCC DDD EEEE
eins zwei drei vier fünf
Hier gibt es zwei unabhängige Saiten. Die String_View ist keine unabhängige Zeichenfolge. Es ist ein Bereichsfenster eines der unabhängigen Saiten. Beachten .
int compare (Basic_string_view s) const
Die Anzahl der Zeichen von zwei String_Views wird hier verglichen. Wenn die unter Verwendung der Mitgliedsfunktion Compare () höher ist, wird eine positive Zahl zurückgegeben. Wenn die Zahlen gleich sind, wird Null zurückgegeben. Wenn das STRING_VIEW -Objekt, das die Mitgliedsfunktion verwendet, eine niedrigere Zahl hat, wird eine negative Zahl zurückgegeben. Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* stra = "Eins zwei drei vier fünf";
String_view strva (Straße, 13);
Cout <const char* strb = "aaa bbb ccc ddd eee";
string_view strvb (strb, 11);
Cout <int ret = strvb.vergleiche (strva);
Cout <Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
AAA BBB CCC
-14, auf dem Computer des Autors.
Suche
size_type find (const chart* s, size_type pos = 0) const
Diese Mitgliedsfunktion sucht nach dem Auftreten des ersten Unterstrichs, s in der betreffenden String_View. Es gibt den Index des ersten Charakters der gefundenen Unterstufe zurück. Wenn nicht gefunden, gibt es -1 zurück. Das zweite Argument gibt an, wo die Suche beginnt (Standardindex ist 0). Das folgende Programm zeigt dies:
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
const char* str = "Eins zwei drei vier fünf";
string_view strv (str, 13);
Cout <const char* cs = "zwei";
int ret = strv.find (cs, 0);
Cout <Rückkehr 0;
Die Ausgabe ist:
eins zwei drei
4
Abschluss
Eine String_View ist eine Fensteransicht eines Bereichs eines Originalzeichens. Es ist keine Kopie der Zeichen. Die Zeichen werden genannt. Es gibt eine String -Ansichtsklasse, aus der String_view -Objekte instanziiert sind. String-View hat viele Mitgliederfunktionen. Die grundlegenden Mitgliedsfunktionen aus den verschiedenen Kategorien wurden oben erläutert.