La cadena C ++ comienza con

La cadena C ++ comienza con
Llega un momento en que el programador tiene que saber con qué comienza una cadena. Este conocimiento puede usarse para elegir o eliminar elementos en una lista de caracteres. Por lo tanto, un programador puede querer saber si una cadena comienza con un carácter en particular o con una subtracción en particular. Un programador puede escribir un código que verifique los caracteres iniciales de una cadena, uno por uno, y compararálo con una sub-string de prefijo. Sin embargo, todas las estrategias involucradas ya han sido realizadas por la biblioteca de cadenas C ++.

La clase de cadena C ++ de la biblioteca de cadenas tiene la función miembro, inicio_with (). Esto hace el trabajo para el programador, pero el programador necesita saber cómo usar la función. Y es por eso que se está produciendo este tutorial. Hay tres variantes de la función de miembro de string start_with (). Las variantes de la misma función se denominan funciones sobrecargadas.

El enfoque básico para la función de miembro inicial_with () es comparar una subtracción independiente corta con el primer segmento corto de la cadena en cuestión. Si son iguales, entonces la función devuelve verdadera. Si son diferentes, la función devuelve falso.

PRECAUCIÓN: La función miembro inicial_with () es una característica C ++ 20. En este artículo, estamos hoy en 2021, por lo que su compilador no puede compilar con éxito las muestras de código.

Contenido del artículo

  • bool starts_with (gráfico x) const
  • bool starts_with (const cuadros* x) const
  • bool starts_with (básico_string_view x) const
  • Conclusión

bool starts_with (gráfico x) const

Esta función de miembro verifica si la cadena literal comienza con un carácter en particular. Recuerde que la cadena literal debe ser de un objeto instanciado desde la clase de cadena. El siguiente programa verifica si la cadena comienza con 'W' en mayúsculas:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

Basic_string str = "Estamos siguiendo.";
bool bl = str.inicio_with ('w');
cout <regresar 0;

La salida debe ser 1, para verdadero.

La coincidencia es sensible a la caja. Entonces, la salida del siguiente programa debe ser falso:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

Basic_string str = "Estamos siguiendo.";
bool bl = str.inicio_with ('w');
cout <regresar 0;

La salida debe ser 0 para falso.

Una cadena también puede comenzar con un carácter no alfabético. El siguiente programa verifica si la cadena comienza con '[':

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

Basic_stringstr = "[Nota: Nota Información - - -. - nota final] ";
bool bl = str.comienza con('[');
cout <regresar 0;

La salida debe ser 1, para verdadero

bool starts_with (const cuadros* x) const

El programador puede querer saber si una cadena de interés comienza con una subtracción independiente particular. En este caso, tiene que usar esta función miembro. El siguiente programa ilustra esto:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

Basic_string str = "Estamos siguiendo.";
const char* ss = "somos";
bool bl = str.inicio_with (ss);
cout <regresar 0;

La salida debe ser 1 para verdad.

La coincidencia es sensible a la caja. Por lo tanto, la salida del siguiente programa, donde la subestimación independiente tiene más de un carácter, debe ser falsa:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

Basic_string str = "Estamos siguiendo.";
const char* ss = "somos";
bool bl = str.inicio_with (ss);
cout <regresar 0;

La salida debe ser 0 para falso.

Una cadena también puede comenzar con caracteres no alfabéticos. El siguiente programa verifica si la cadena comienza con una substrucción particular de números:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

Basic_stringstr = "8762ht es un número de código.";
const char* ss = "8762";
bool bl = str.inicio_with (ss);
cout <regresar 0;

La salida debe ser 1, para verdadero.

bool starts_with (básico_string_view x) const

Vista de cadena

El argumento a la función de miembro inicial_with puede ser un objeto String_View. La siguiente pregunta es: "¿Qué es un string_view??". Un String_View es un rango de alguna cadena original que se convierte en la lista de un nuevo objeto de cadena. Los caracteres no se copian de la cadena original; se hace referencia. Es decir, los elementos de la cadena original no se copian; se hace referencia. Sin embargo, esta visión de cadena tiene muchas de las funciones que tiene la clase de cadena. El String_View también es una clase desde la cual se crean los objetos String_View. El siguiente programa muestra la similitud de una clase String_View y una cadena:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

const char* str = "Todo lo que sube debe bajar.";
string_view strv (str, 23);
para (int i = 0; i cout <cout <regresar 0;

La salida es:

Todo lo que sube

La biblioteca String_View tuvo que ser incluida. Tenga en cuenta que en la declaración, se han utilizado String_View y no BASIC_STRING_VIEW. Los primeros 23 caracteres de la cadena original se convirtieron en los caracteres de String_View. La declaración del programa para la construcción del objeto String_View es:

string_view strv (str, 23);

Si se cambia un personaje en el rango de la cadena original, la vista de cadena también se cambia. El siguiente programa ilustra esto:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

char str [] = "Todo lo que sube debe bajar.";
string_view strv (str, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
para (int i = 0; i cout <cout <regresar 0;

La salida es:

Earlything que sube

El primer, segundo y tercero caracteres de la cadena original se cambiaron después de que se declaró el objeto String_View. Esto confirma que, aunque el String_View es un objeto, hace referencia a un rango en la cadena original y no tiene una copia del rango.

El texto de la cadena original se puede hacer constante. Para lograr esto, use un puntero constante para Char en lugar de una matriz de Chars. El siguiente programa no compila, emitiendo un mensaje de error porque el texto de la cadena original se ha hecho constante:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

const char* str = "Todo lo que sube debe bajar.";
string_view strv (str, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
para (int i = 0; i cout <cout <regresar 0;

Argumento de vista de cadena

La sintaxis para la función String_starts () es:

bool starts_with (básico_string_viewx) const

Cómo crear un objeto String_View se ha ilustrado arriba. Después de crear el objeto, pasarlo como un argumento a la función de miembro inicial_with () de cadena. El siguiente programa ilustra esto:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

const char* str = "Todo lo que sube debe bajar.";
string_view strv (str, 23);
const char* ss = "todo";
bool bl = str.inicio_with (ss);
cout <regresar 0;

La salida debe ser verdadera, para 1. Esta vez, se han incluido las bibliotecas String y String_View.

Si el programador quiere cambiar la cadena original, tiene que usar una matriz de Chars como argumento al constructor String_View en lugar de un puntero constante a Char. El siguiente programa muestra la situación, cómo cambiará la cadena original:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

char str [] = "Todo lo que sube debe bajar.";
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.inicio_with (ss);
cout <regresar 0;

La salida debe ser 1, para verdadero.

Incluso si el argumento a la función miembro inicial_with () es un objeto String_View, la carcasa aún se respeta. El siguiente programa ilustra esto:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

char str [] = "Todo lo que sube debe bajar.";
string_view strv (str, 23);
const char* ss = "todo";
bool bl = str.inicio_with (ss);
cout <regresar 0;

La salida debe ser 0 para falso. La primera 'e' en la subtracción está en minúsculas, mientras que la primera 'e' en la cadena de interés está en mayúscula.

Si el argumento a la función de miembro inicial_with () es una visión String_View, entonces los caracteres que no son de alfabeto aún pueden ser parte de las cadenas. En el siguiente programa, se verifica un conjunto de caracteres enteros consecutivos si inician la cadena de interés, donde el argumento Start_With () es un String_View:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

const char* str = "8762ht es un número de código.";
string_view strv (str);
const char* ss = "8762";
bool bl = str.inicio_with (ss);
cout <regresar 0;

La salida debe ser 1 para verdad.

Conclusión

La clase de cadena en C ++ tiene una función miembro llamada start_with (). Verifica si una cadena subindependiente forma los primeros caracteres de una cadena de interés (prefijo). Las funciones del miembro sobrecargado son inicio_with (gráfico x), inicio_with (const chart* x) y start_with (string_view x). Cada uno devuelve un bool.

Chrys