La stringa C ++ inizia con

La stringa C ++ inizia con
Arriva un momento in cui il programmatore deve sapere con cosa inizia una stringa. Questa conoscenza può essere utilizzata per scegliere o eliminare gli elementi in un elenco di caratteri. Quindi, un programmatore potrebbe voler sapere se una stringa inizia con un carattere particolare o con una particolare sotto-corda. Un programmatore può scrivere un codice che controllerà i caratteri iniziali di una stringa, uno a uno, e confrontarlo con una sotto-corda prefisso. Tuttavia, tutte le strategie coinvolte sono già state fatte dalla libreria di stringhe C ++.

La classe String C ++ della libreria String ha la funzione membro, start_with (). Questo fa il lavoro per il programmatore, ma il programmatore deve sapere come utilizzare la funzione. Ed è per questo che questo tutorial viene prodotto. Esistono tre varianti della funzione String Starts_with () membro. Le varianti della stessa funzione sono chiamate funzioni sovraccarichi.

L'approccio di base per la funzione membro start_with () è di confrontare una breve sotto-corda indipendente con il primo breve segmento della stringa in questione. Se sono uguali, la funzione restituisce vera. Se sono diversi, la funzione restituisce falso.

ATTENZIONE: la funzione membro start_with () è una funzione C ++ 20. In questo articolo, siamo oggi nel 2021, quindi il tuo compilatore potrebbe non compilare correttamente i campioni di codice.

Contenuto dell'articolo

  • bool starts_with (grafico x) const
  • bool starts_with (const grafico* x) const
  • bool starts_with (base_string_view x) const
  • Conclusione

bool starts_with (grafico x) const

Questa funzione membro verifica se la stringa letterale inizia con un carattere particolare. Ricorda che la stringa letterale deve essere di un oggetto istanziato dalla classe stringa. Il seguente programma controlla se la stringa inizia con 'W' in maiuscolo:

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

basic_string str = "Stiamo andando avanti.";
bool bl = str.avvia_with ('w');
cout <restituzione 0;

L'output dovrebbe essere 1, per vero.

La corrispondenza è sensibile al caso. Quindi l'output del seguente programma dovrebbe essere falso:

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

base_string str = "Stiamo andando avanti.";
bool bl = str.avvia_with ('w');
cout <restituzione 0;

L'output dovrebbe essere 0 per false.

Una stringa può anche iniziare con un carattere non alfabetico. Il seguente programma controlla se la stringa inizia con '[':

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

base_stringSTR = "[Nota: Nota Informazioni - - -. - Nota finale] ";
bool bl = str.inizia con('[');
cout <restituzione 0;

L'output dovrebbe essere 1, per vero

bool starts_with (const grafico* x) const

Il programmatore potrebbe voler sapere se una stringa di interesse inizia con una particolare sotto-corda indipendente. In questo caso, deve usare questa funzione membro. Il seguente programma illustra questo:

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

basic_string str = "Stiamo andando avanti.";
const char* ss = "we are";
bool bl = str.avvia_with (ss);
cout <restituzione 0;

L'output dovrebbe essere 1 per vero.

La corrispondenza è sensibile al caso. Quindi l'output del seguente programma, in cui la sotto-corda indipendente ha più di un carattere, dovrebbe essere falso:

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

base_string str = "Stiamo andando avanti.";
const char* ss = "we are";
bool bl = str.avvia_with (ss);
cout <restituzione 0;

L'output dovrebbe essere 0 per false.

Una stringa può anche iniziare con caratteri non alfabetici. Il seguente programma controlla se la stringa inizia con una particolare sotto-corda di numeri:

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

base_stringSTR = "8762HT è un numero di codice.";
const char* ss = "8762";
bool bl = str.avvia_with (ss);
cout <restituzione 0;

L'output dovrebbe essere 1, per vero.

bool starts_with (base_string_view x) const

Vista stringa

L'argomento alla funzione start_with membro può essere un oggetto String_View. La domanda successiva è: “Che cos'è un String_View?". A String_View è un intervallo da una stringa originale che diventa l'elenco di un nuovo oggetto stringa. I personaggi non vengono copiati dalla stringa originale; sono referenziati. Cioè, gli elementi della stringa originale non vengono copiati; sono referenziati. Tuttavia, questa visione delle stringhe ha molte delle funzioni che ha la classe stringa. String_view è anche una classe da cui vengono creati gli oggetti String_View. Il seguente programma mostra la somiglianza di una classe String_View e una stringa:

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

const char* str = "tutto ciò che sale deve scendere.";
String_view STRV (STR, 23);
per (int i = 0; i cout <cout <restituzione 0;

L'output è:

Tutto ciò che va su

La libreria String_View doveva essere inclusa. Si noti che nella dichiarazione, sono stati utilizzati String_view e non basic_string_view. I primi 23 caratteri della stringa originale sono diventati i caratteri di String_View. La dichiarazione del programma per la costruzione dell'oggetto String_View è:

String_view STRV (STR, 23);

Se viene modificato un carattere nell'intervallo della stringa originale, anche la vista stringa viene modificata. Il seguente programma illustra questo:

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

char str [] = "tutto ciò che sale deve scendere.";
String_view STRV (STR, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
per (int i = 0; i cout <cout <restituzione 0;

L'output è:

Earlything che sale

Il primo, il secondo e il terzo caratteri della stringa originale sono stati modificati dopo che l'oggetto String_View era stato dichiarato. Ciò conferma che, sebbene String_View sia un oggetto, fa riferimento a un intervallo nella stringa originale e non ha una copia dell'intervallo.

Il testo della stringa originale può essere reso costante. Per raggiungere questo obiettivo, usa un puntatore const per Char anziché una serie di cameriere. Il seguente programma non si compila, emettendo un messaggio di errore perché il testo della stringa originale è stato reso costante:

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

const char* str = "tutto ciò che sale deve scendere.";
String_view STRV (STR, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
per (int i = 0; i cout <cout <restituzione 0;

String Visualizza argomento

La sintassi per la funzione String_Starts () è:

bool starts_with (base_string_viewx) const

Come creare un oggetto String_view è stato illustrato sopra. Dopo aver creato l'oggetto, passarlo come argomento alla funzione membro String start_with (). Il seguente programma illustra questo:

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

const char* str = "tutto ciò che sale deve scendere.";
String_view STRV (STR, 23);
const char* ss = "tutto";
bool bl = str.avvia_with (ss);
cout <restituzione 0;

L'output dovrebbe essere vero, per 1. Questa volta sono state incluse le librerie String e String_View.

Se il programmatore desidera modificare la stringa originale, deve usare una serie di chars come argomento per il costruttore String_View anziché un puntatore costante a Char. Il seguente programma mostra la situazione, come cambierà la stringa originale:

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

char str [] = "tutto ciò che sale deve scendere.";
String_view STRV (STR, 23);
str [5] = 'a'; str [6] = 'r'; str [7] = 'l'; str [8] = 'r'; str [9] = 'l';
const char* ss = "everypple";
bool bl = str.avvia_with (ss);
cout <restituzione 0;

L'output dovrebbe essere 1, per vero.

Anche se l'argomento alla funzione membro start_with () è un oggetto String_view, l'involucro è ancora rispettato. Il seguente programma illustra questo:

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

char str [] = "tutto ciò che sale deve scendere.";
String_view STRV (STR, 23);
const char* ss = "tutto";
bool bl = str.avvia_with (ss);
cout <restituzione 0;

L'output dovrebbe essere 0 per false. La prima "E" nella sotto-corda è in minuscolo, mentre la prima "E" nella stringa di interesse è in maiuscolo.

Se l'argomento alla funzione membro start_with () è una string_view, i caratteri non alfabeti possono ancora far parte delle stringhe. Nel seguente programma, una serie di caratteri interi consecutivi viene verificato se iniziano la stringa di interesse, in cui l'argomento start_with () è un String_View:

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

const char* str = "8762ht è un numero di codice.";
string_view strv (str);
const char* ss = "8762";
bool bl = str.avvia_with (ss);
cout <restituzione 0;

L'output dovrebbe essere 1 per vero.

Conclusione

La classe String in C ++ ha una funzione membro chiamata start_with (). Verifica se una stringa subindipendente, forma i primi caratteri di una stringa di interesse (prefisso). Le funzioni del membro sovraccarico sono start_with (grafico x), start_with (const grafico* x) e starts_with (String_view x). Ognuno restituisce un bool.

Chrys