Normalmente , un programador puede recuperar la longitud de una frase (o cadena) en cualquier método de C + + programa llamamientos " length () " de la cadena. Sin embargo , las cadenas ya implementados en C + + no estaban siempre disponibles , y los programadores no tienen acceso a los métodos ya hechas , como la longitud (). Contando la longitud de una cadena sin el uso de este método consiste en construir entendimiento string, matrices de caracteres de tipo c , y cómo iterar sobre ellos. C + + y C Cuerdas Cuerdas
En C + +, la incorporada en el tipo de datos "string " representa oraciones , frases o palabras. Sin embargo , el tipo de datos de cadena representa en realidad lo que los programadores llaman una cadena " de estilo c". En el idioma original C , los programadores almacenan frases como colecciones (o arrays) de caracteres. Así, mientras que en C + +, una declaración de variable frase parece :
string str = " Hola" ;
en C, la misma declaración se ve así:
char str [ 50 ] = " Hola" ;
Donde " str " representa un conjunto de 50 caracteres. Además, como cadenas de lenguaje C son simplemente arrays, todos terminan con un carácter de terminación nulo ("\\ 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 contiene métodos para hacer el trabajo en la cadena. Uno de estos métodos ( " c_str ()") devuelve una cadena de lenguaje 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 del C Cadena
para realmente hacer algo con la cadena de lenguaje C recuperado de c_str () , el programador tiene que ponerlo en una matriz de caracteres . Esto requiere que el método de " strcpy " , que copiará una matriz de caracteres a otro :
# include
# include
# include < ; iostream >
using namespace std ;
string str = " Una cadena " ;
caracteres cadena2 [ 50 ] ;
strcpy ( cadena2 , str . c_str ( ))
Ahora, la representación de cadena de tipo C de " str " se copia en la matriz de caracteres " str2 " (incluyendo nula caracteres) .
Contando el personajes
Ahora que el programador tiene una copia matriz de la cadena, incluyendo el carácter nulo que informará al programador cuando termina la cadena , se convierte en un asunto de caracteres simplemente contar hasta que el programa realiza la hipótesis nula carácter :
int i = 0 ;
while (! str2 [ i ] = " \\ 0 ") {
i + +
}
cout << i + 1 ;
el bucle "while" comprueba cada personaje desde el principio ( la posición de carácter 0 ª ) hasta alcanzar el carácter nulo . A continuación , el programa imprime i +1 ( porque 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 .