Bienvenidos sean a este post, hoy veremos a las cadenas de texto.
En el post anterior vimos dos temas que componen a un char. Primero, mencionamos que es uno de los tipos primitivos y es el encargado de manejar cadenas de texto. Segundo, su nombre no es por la abreviacion de la palabra character sino porque es la abreviacion de CHaracter ARray. Y que sea un array es el truco que nos permite manejar cadenas de texto pero tambien podemos manejar un solo caracter. Veamos como es la sintaxis para definir un char:
char nombre_var[tamaño];
Esta es la definicion basica donde primero pasaremos el tipo char, seguido del nombre identificador, y por ultimo entre parentesis pasamos el tamaño. Es decir, el total de caracteres que almacenara. Veamos otra forma de definirlo:
char nombre_var[] = { 'ch1','ch2','ch3',...'chN','\0' };
En este caso, no pasamos el tamaño porque al igual que en un array, este se define con la cantidad de elementos que informemos, y de esta manera siempre el ultimo caracter es \0 porque es el caracter nulo que indica el final de la linea y este no estara incluido en el tamaño del array. Para que lo entiendan a este definicion les paso un ejemplo:
char texto[] = {'H','o','l','a',' ','M','u','n','d','o','\0'};
Vean como formamos la frase Hola Mundo, caracter por caracter, y siempre el caracter nulo al final. Tengan en cuenta que de esta forma siempre deben informarlo porque el compilador no tiene forma de saber cuando termina la linea. Pero tenemos una tercer opcion:
char nombre_var[] = "texto a agregar";
En este caso, le pasamos una cadena de texto y el compilador automaticamente le asignara el tamaño en base a cada caracter que contenga. Por otro lado, le agregara el caracter nulo automaticamente sin necesidad que lo agreguemos nosotros. Les dejo un ejemplo de esta sintaxis:
char texto[] = "Hola, Mundo!";
Como pueden ver, es la manera mas simple de pasarle una cadena de texto para poder manejarla. Con todo esto comentado, vamos a analizar un ejemplo. Para ello deben crear un archivo con el nombre de texto.cpp y le agregaremos el siguiente codigo:
#include <iostream>
int main()
{
char texto[ 80 ];
std::cout << "Escribe un texto: ";
std::cin >> texto;
std::cout << "Ingresaste: " << texto << std::endl;
return 0;
}
En este codigo primero declaramos una variable de tipo char que almacena hasta 80 caracteres. Lo siguiente es mostrar un texto para indicar que debemos hacer. Luego tenemos la funcion cin para ingresar texto desde la linea de comandos y ese texto lo almacenaremos en la variable. La siguiente linea sera para mostrar el valor almacenado en texto. Compilemos y veamos como trabaja:
$ ./texto
Escribe un texto: tinchicus
Ingresaste: tinchicus
$
Como pueden ver funciono perfectamente, pero vamos a probarlo de la siguiente manera:
$ ./texto
Escribe un texto: Hola, Mundo!
Ingresaste: Hola,
$
Ooppps, fallo y no nos trajo todo el texto, pero porque? Esto es debido a que ingresamos directamente el texto pero como encontro un espacio en blanco lo considero como espacio nulo y por ende, lo considera como el final del texto. Para solucionarlo vamos a modificar el codigo de la siguiente manera:
#include <iostream>
int main()
{
char texto[ 80 ];
std::cout << "Escribe un texto: ";
std::cin.get(texto, 79);
std::cout << "Ingresaste: " << texto << std::endl;
return 0;
}
En este caso, solo modificamos la linea de cin para aplicarle un get. Este tiene como primer parametro la variable que usaremos para almacenarlo. Y el segundo parametro sera la cantidad de caracteres que almacenara. Siempre debe ser menor que el tamaño del char, recuerden que por mas que no lo hagamos nosotros se agrega el caracter nulo para indicar el final. El resto del codigo sigue siendo el mismo, compilemos y veamos la salida:
$ ./texto
Escribe un texto: Hola, Mundo!
Ingresaste: Hola, Mundo!
$
Como pueden ver, ahora si funciono perfectamente porque toma todo el texto enviado sin importar el contenido. Tengan en cuenta que de las dos formas funciona pero uno se puede ajustar mejor que el otro para ciertas necesidades. Sobre cin hablaremos en otro post mas adelante.
En resumen, hoy hemos visto a char, que es, para que se utiliza, las distintas formas de definirlas, un ejemplo simple, un error que podemos tener, y como solucionarlo. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donatión
It’s for site maintenance, thanks!
$1.50
