String C ++ zaczyna się od

String C ++ zaczyna się od
Nadchodzi czas, kiedy programista musi wiedzieć, od czego zaczyna się ciąg. Ta wiedza może być wykorzystywana do wyboru lub eliminowania elementów na liście znaków. Tak więc programista może chcieć wiedzieć, czy ciąg zaczyna się od konkretnej postaci, czy z określonym podtrepisem. Programista może napisać kod, który sprawdzi początkowe znaki ciągu, jeden po drugim i porównać to z podłączaniem przedrostka. Jednak wszystkie zaangażowane strategie zostały już wykonane przez bibliotekę ciągów C ++.

Klasa ciągów C ++ biblioteki ciągów ma funkcję członka, start_with (). To działa dla programisty, ale programista musi wiedzieć, jak korzystać z funkcji. I dlatego produkowany jest ten samouczek. Istnieją trzy warianty funkcji elementu start_with (). Warianty tej samej funkcji są wywoływane funkcje przeciążone.

Podstawowym podejściem do funkcji członka start_with () jest porównanie krótkiego niezależnego podtrepingu z pierwszym krótkim segmentem danego ciągu. Jeśli są takie same, funkcja zwraca prawdziwie. Jeśli są inne, funkcja zwraca fałszywe.

Uwaga: funkcja elementu startu_with () jest funkcją C ++ 20. W tym artykule jesteśmy dzisiaj w 2021.

Treść artykułu

  • bool start_with (wykres x) const
  • bool start_with (const wykres* x) const
  • bool start_with (basic_string_view x) const
  • Wniosek

bool start_with (wykres x) const

Ta funkcja członka sprawdza, czy literał ciągów zaczyna się od konkretnego znaku. Pamiętaj, że literał stringowy musi być obiektem utworzonym z klasy ciągów. Poniższy program sprawdza, czy ciąg zaczyna się od „W” w górach:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

basic_string str = "idziemy dalej.";
Bool Bl = str.start_with („w”);
Cout <powrót 0;

Wyjście powinno wynosić 1, dla prawda.

Dopasowanie jest wrażliwe na wielkość liter. Dlatego wyjście następującego programu powinno być fałszywe:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

Basic_String str = "idziemy dalej.";
Bool Bl = str.start_with („w”);
Cout <powrót 0;

Wyjście powinno wynosić 0 dla fałszu.

Ciąg może również zacząć od postaci niealfabetycznej. Poniższy program sprawdza, czy ciąg zaczyna się od „[”:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

Basic_Stringstr = "[UWAGA: UWAGA Informacje - - -. - Uwaga końca] ";
Bool Bl = str.zaczynać z('[');
Cout <powrót 0;

Wyjście powinno wynosić 1, dla prawda

bool start_with (const wykres* x) const

Programista może chcieć wiedzieć, czy ciąg zainteresowań zaczyna. W takim przypadku musi użyć tej funkcji członka. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

basic_string str = "idziemy dalej.";
const char* ss = „jesteśmy”;
Bool Bl = str.start_with (ss);
Cout <powrót 0;

Wyjście powinno wynosić 1 dla prawdziwego.

Dopasowanie jest wrażliwe na wielkość. Zatem wyjście następującego programu, w którym niezależne podprzepusta ma więcej niż jeden znak, powinno być fałszywe:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

Basic_String str = "idziemy dalej.";
const char* ss = „jesteśmy”;
Bool Bl = str.start_with (ss);
Cout <powrót 0;

Wyjście powinno wynosić 0 dla fałszu.

Ciąg może również zacząć od znaków niealfabetycznych. Poniższy program sprawdza, czy ciąg rozpoczyna się od konkretnego sub-string liczb:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

Basic_Stringstr = "8762HT to numer kodu.";
const char* ss = "8762";
Bool Bl = str.start_with (ss);
Cout <powrót 0;

Wyjście powinno wynosić 1, dla prawda.

bool start_with (basic_string_view x) const

Widok ciągu

Argumentem funkcji Start_With Member może być obiektem String_View. Następne pytanie brzmi: „Co to jest String_View?". String_View to zakres od niektórych oryginalnych ciągu, który staje się listą nowego obiektu String. Znaki nie są kopiowane z oryginalnego ciągu; są do nich odwołane. Oznacza to, że elementy oryginalnego ciągu nie są kopiowane; są do nich odwołane. Jednak to widok String-View ma wiele funkcji, które ma klasa ciągów. String_View to także klasa, z której tworzone są obiekty String_View. Poniższy program pokazuje podobieństwo klasy_view i string:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

const char* str = "Wszystko, co idzie w górę, musi zejść.";
String_View Strv (Str, 23);
dla (int i = 0; i Cout <Cout <powrót 0;

Wyjście to:

Wszystko, co idzie w górę

Biblioteka String_View musiała zostać uwzględniona. Zauważ, że w Deklaracji użyto String_View, a nie podstawowe_string_view. Pierwsze 23 znaki oryginalnego ciągu stały się znakami String_View. Instrukcja programu do budowy obiektu String_View to:

String_View Strv (Str, 23);

Jeśli znak w zakresie oryginalnego ciągu zostanie zmieniony, widok ciągów jest również zmieniany. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

char str [] = "Wszystko, co idzie w górę, musi zejść.";
String_View Strv (Str, 23);
str [1] = „a”; str [2] = 'r'; str [3] = „l”;
dla (int i = 0; i Cout <Cout <powrót 0;

Wyjście to:

Wcześniejsze, które rośnie

Pierwsze, drugie i trzecie znaki oryginalnego ciągu zostały zmienione po ogłoszeniu obiektu String_View. To potwierdza, że ​​chociaż String_View jest obiektem, odwołuje się do zakresu w oryginalnym ciągu i nie ma kopii zakresu.

Tekst oryginalnego łańcucha może być stały. Aby to osiągnąć, użyj wskaźnika const, aby zwęgl. Poniższy program nie kompiluje, wydając komunikat o błędzie, ponieważ tekst oryginalnego ciągu został stały:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

const char* str = "Wszystko, co idzie w górę, musi zejść.";
String_View Strv (Str, 23);
str [1] = „a”; str [2] = 'r'; str [3] = „l”;
dla (int i = 0; i Cout <Cout <powrót 0;

Argument widoku ciągu

Składnia funkcji String_Starts () to:

bool start_with (basic_string_viewx) const

Jak utworzyć obiekt String_View został zilustrowany powyżej. Po utworzeniu obiektu przejdź go jako argument do funkcji Start_with () String Member. Poniższy program ilustruje to:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

const char* str = "Wszystko, co idzie w górę, musi zejść.";
String_View Strv (Str, 23);
const char* ss = „wszystko”;
Bool Bl = str.start_with (ss);
Cout <powrót 0;

Wyjście powinno być prawdziwe, dla 1. Tym razem uwzględniono biblioteki String i String_View.

Jeśli programista chce zmienić oryginalny ciąg, musi użyć tablicy książek jako argumentu do konstruktora String_View zamiast stałego wskaźnika do Char. Poniższy program pokazuje sytuację, jak zmienią się oryginalny ciąg:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

char str [] = "Wszystko, co idzie w górę, musi zejść.";
String_View Strv (Str, 23);
str [5] = „a”; str [6] = 'r'; str [7] = „l”; str [8] = 'r'; str [9] = „l”;
const char* ss = "everyApple";
Bool Bl = str.start_with (ss);
Cout <powrót 0;

Wyjście powinno wynosić 1, dla prawda.

Nawet jeśli argumentem funkcji członka start_with () jest obiekt String_View, obudowa jest nadal szanowana. Poniższy program ilustruje to:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

char str [] = "Wszystko, co idzie w górę, musi zejść.";
String_View Strv (Str, 23);
const char* ss = „wszystko”;
Bool Bl = str.start_with (ss);
Cout <powrót 0;

Wyjście powinno wynosić 0 dla fałszu. Pierwszy „e” w podtreparstwie jest małymi literami, podczas gdy pierwszy „e” w ciągłym ciągu.

Jeśli argumentem funkcji elementu startu_with () jest String_View, wówczas znaki inne niż alfabet mogą nadal być częścią ciągów. W poniższym programie sprawdzany jest zestaw kolejnych znaków całkowitych, czy rozpoczynają ciąg zainteresowania, gdzie argument start_with () jest String_View:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

const char* str = "8762HT to numer kodu.";
string_view Strv (str);
const char* ss = "8762";
Bool Bl = str.start_with (ss);
Cout <powrót 0;

Wyjście powinno wynosić 1 dla prawdziwego.

Wniosek

Klasa ciągów w C ++ ma funkcję członka o nazwie start_with (). Sprawdza, czy ciąg niezależny od podsumowania, tworzy pierwsze znaki ciągnika (prefiks). Przeciążone funkcje członka są starte_with (wykres x), start_with (const wykres* x) i start_with (string_view x). Każdy zwraca bool.

Chrys