Bienvenidos sean a este post, hoy veremos una herramienta que usamos en otros posts.
Siempre se comenta que C++ es una evolucion de C, dando como resultado no solo que el codigo de C sea compatible con C++ sino que mucho de lo bien implementado en C siga en C++. Por ejemplo, para manejar strings o cadenas de texto de manera basica se hace con char. Para ello se hace con un puntero de un array de char. La unica condicion es que ese array tenga como ultima posicion, un caracter nulo o \0 para finalizar la cadena. Vamos a analizar el siguiente ejemplo:
#include <iostream>
int main()
{
char palabra[10] = "tinchicus";
std::cout << palabra << std::endl;
return 0;
}
Este es un ejemplo simple donde definimos un array de 10 elementos y le pasamos un texto. Para finalmente mostrar el dato recibido. Compilemos y veamos la salida:
$ ./string
tinchicus
$
Funciono perfectamente almacenando la cadena y mostrandola, del codigo anterior busquemos la siguiente linea:
char palabra[10] = "tinchicus";
Y hagamos el siguiente cambio:
char palabra[9] = "tinchicus";
Si lo compilan con esta nueva linea, nos devolvera lo siguiente:
$ g++ string.cpp -o string
string.cpp: In function ‘int main()’:
string.cpp:5:27: error: initializer-string for ‘char [9]’ is too long [-fpermissive]
5 | char palabra[9] = "tinchicus";
| ^~~~~~~~~~~
$
Por que nos devuelve un error al compilarlo si es la misma cantidad de caracteres que de elementos en el array? Por lo comentado al inicio, siempre lleva al final el caracter \0 para finalizar la cadena.
Pero una de las grandes virtudes de C y C++, es su gran adaptibilidad y capacidad de expansion. Y en ambos casos disponemos de un archivo de cabecera para manejar las string. Para el caso de C++, ya la hemos estado usando en algunos posts anteriores. Esta basicamente trabaja como el codigo anterior pero este en lugar de usar un array, utiliza un vector para manejar los caracteres recibidos, permitiendo que se pueda ajustar el tamaño de manera dinamica, por lo tanto sin necesidad de preocuparnos por el caracter nulo. Tomemos el codigo anterior y convertimoslo para string:
#include <iostream>
#include <string>
int main()
{
std::string palabra = "tinchicus";
std::cout << palabra << std::endl;
palabra = "tinchicus.com";
std::cout << palabra << std::endl;
return 0;
}
Primero importamos la libreria para poder utilizarlo. Lo siguiente es definir una variable con el mismo nombre que el codigo anterior y el mismo texto, para luego mostrarlo. Lo siguiente es cambiar el valor de la variable anterior y lo mostramos nuevamente. Compilemos y ejecutemos para ver como es su salida:
$ ./string
tinchicus
tinchicus.com
$
Como pueden ver funciono perfectamente, tambien podemos observar como se cambio el tamaño para permitir los nuevos caracteres. A diferencia de char, donde el tamaño es fijo y no se puede modificar una vez establecido. Podemos generar un array mas grande del tamaño necesario pero eso conlleva en un desperdicio de memoria. Pero no quita que se sigan usando el metodo comentado al inicio, principalmente por un tema de compatibilidad con versiones mas antiguas.
En resumen, hoy hemos visto a string, como se manipula originalmente, y algunos conceptos a tener en cuenta, luego como se utiliza mediante su libreria, y un ejemplo para ver como trabaja mejor. 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
