Tecnología

Inicio

Longitud de la cadena Sin Construido en la función en C ++

Longitud de la cadena Sin Construido en la función en C ++


Normalmente, un programador puede recuperar la duración de la cadena (o cadena) en cualquier programa en C ++ por llamamientos método de "longitud ()" de la cadena. Sin embargo, tal como se aplican las cadenas en C ++ no estaban siempre disponibles, y los programadores no tienen acceso a los métodos ya hechos tales como la longitud (). Contando la longitud de una cadena sin necesidad de utilizar este método implica construido en cadena de la comprensión, las matrices de caracteres al estilo C, y la forma de iterar sobre ellos.

C ++ y C Cuerdas Cuerdas

En C ++, la incorporada en el tipo de datos "cadena" representa frases, frases o palabras. Sin embargo, el tipo de datos de cadena representa en realidad lo que los programadores llaman una cadena "c-estilo". En el lenguaje C original, los programadores almacenan frases como colecciones (o matrices) de caracteres. Así, mientras que en C ++, una declaración de variable frase se parece a:

string cadena = "Hola";

en C, la misma declaración se parece a:

Char str [50] = "Hola";

Donde "str" ​​representa un conjunto de 50 caracteres. Además, puesto que las cadenas de estilo C son simplemente arrays, todos ellos extremo con un carácter de terminación nula ( "\ 0") que significa el final de la cadena.

El "c_str ()" Método

Lo interesante de cadenas en C ++ es que son una clase, y como clase contienen métodos para hacer el trabajo en la cadena. Uno de estos métodos ( "c_str ()") devuelve una cadena de estilo C que representa la cadena de C ++. Esto significa que el valor de retorno va a terminar como una matriz de caracteres que contiene los caracteres de la cadena, incluyendo el carácter de terminación nula.

Copia de la secuencia de C

Para realmente hacer algo con la cadena tipo C recuperado de c_str (), el programador necesita para ponerlo en una matriz de caracteres. Esto requiere el método "strcpy", el cual copia una matriz de caracteres a otro:

incluir <cadena> incluir <cstring> incluir <iostream>

using namespace std;

string str = "una cadena";

Char str2 [50];

strcpy (str2, str.c_str ())

Ahora, la representación de cadena C-estilo de "str" ​​copiará en el array de caracteres "str2" (incluyendo nula caracteres).

Contando los caracteres

Ahora que el programador tiene una copia matriz de la cadena, incluyendo el carácter nulo que informará al programador cuando se termina la cadena, se convierte en una cuestión de simple conteo de caracteres hasta que el programa realiza el carácter nulo:

int i = 0;

mientras que (str2 [i]! = "\ 0") {

i ++

}

cout << i + 1;

El ", mientras que" los cheques de lazo cada personaje desde el principio (la posición del carácter 0 ª) hasta alcanzar el carácter nulo. A continuación, el programa imprime i + 1 (ya que el índice comienza en 0, y la posición del carácter nulo no se cuenta) que se traduce en un valor de retorno de 8.