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
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_Stringstr = "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_Stringstr = "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; iCout < 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; iCout < 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; iCout < 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