Вы находитесь на странице: 1из 3

LA CLASE DE LOS STRINGS

El string es un objeto específicamente diseñado para operar con secuencias de


caracteres.
Es importante establecer una diferencia entre este tipo de string, exclusivo del
lenguaje C++, y el denominado C-string o string de C.
Como el título dice, en C++ los strings son una clase, concepto clave para el
entendimiento cabal de las características y ventajas de C++, así como también
de los lenguajes y paradigmas de programación, en general. Al ser una clase,
a modo de resumen, los strings poseen características propias, y, más
concretamente, funciones que se pueden ocupar con sólo definir un string, esto
es, funciones pertenecientes a la clase, más comúnmente llamados métodos.
A modo de ejemplo, sabemos que todos los objetos que nos rodean tienen
características determinadas, algunas transversales por el sólo hecho de ser
materia y otras más particulares. Sería fácil, por ejemplo, definir dos categorías
que correspondieran a “comida” y a “ropa”, pues es mucho más lógico agrupar
peras con manzanas que peras con pantalones. Asimismo, dentro de la comida,
podríamos definir “frutas”, “lácteos”, “legumbres”, “verduras”, etc. A cada una de
estas categorías les podríamos llamar clases, y lo importante aquí es entender
que cada una de éstas se diferencia de las otras por sus características, es decir,
los elementos que agrupa, y las operaciones (métodos) que se pueden efectuar
sobre la misma.
Llevemos este ejemplo a la matemática y consideremos los números reales.
Sabemos que dentro de éstos hay subcategorías como los naturales, racionales,
primos, etc. Es evidente que hay operaciones que podemos hacer con unos y con
otros y otras que no: 3 dividido en 5 no es un número natural.
Ahora llevemos el ejemplo a la programación en C++. Sabemos que todos los
números los podemos sumar, restar, etc. Sin embargo, hay operaciones que no
podemos hacer con todos. Por ejemplo, la función pow de la librería cmath, no
acepta variables de tipo int; sólo float y double.
En el lenguaje C, los strings se podían definir de dos formas, una de las cuales
puede ser familiar para algunos:

char string[50]; // Esto es un arreglo.


char *string; // Esto es un puntero.

La primera forma es mucho más intuitiva, pues quiere decir que se define un
grupo (arreglo) de 50 variables tipo char, grupo que, a su vez, es una variable
tipo char.
Para estos esfectos no importa la segunda forma. Lo hará más adelante.
Debido a que los strings, como concepto, hacen referencia a conjuntos de
caracteres, o palabras, se hacía necesario tener una forma de operar con ellos:
compararlos, copiarlos, reemplazarlos, concatenarlos, buscar letras o
substrings en su interior, etc. Para todo esto existe la librería string.h (cstring
en C++), que contiene funciones para hacer todo lo recién mencionado y más.

No obstante, con la llegada de la programación orientada a objetos en C++


y el concepto de clase, se encontró una forma más fácil, directa y útil de trabajar
con secuencias de caracteres. Ésta es la clase string.

Los strings se declaran como cualquier otra variable, pero, además, tienen
algunas variaciones que pueden otorgar facilidad en ciertos casos:

string str1; // str1 inicializado en el caracter vacío “”.


string str2 = “Hola”; // str2 inicializado en “Hola” (sin las comillas).
string str3 (“Hola”); // Lo mismo que str2.
string str4 (str3); // Lo mismo que str2 y str3.
string str5 (8, 'x'); // str5 inicializado con ocho 'x' juntas.

Como ya se mencionó, al ser una clase, los strings tienen funciones propias, es
decir métodos, así como también características para manipularlos. A
continuación se listan algunos ejemplos:

string str1 (“Este es un string de prueba”);


string str2 (“Holi”);

cout << str1 << endl; // Se imprime todo el contenido de str1.


cout << str2[0] << endl; // Se imprime la primera letra de str2.
// NOTA: Siempre se parte desde subíndice 0.
str2 = str1; // str2 pasa a contener lo mismo que str1.

if (str1 == str2) // NOTA: “Holi” no es lo mismo que “holi”.


cout << str1 << “ y ” << str2 << “ son iguales. :D” << endl;

str2 = str1.substr (0, 4); // Substr, en este caso, retorna el substring


// que se obtiene partiendo desde la posición
// cero y avanzando cuatro espacios: “Este”.

cout << str2.length() << endl; // Muestra el largo de str2: número entero 4.
str2.swap (str1); // El método swap intercambia el valor de str2
// con el valor de str1.

string str3 = “archivo.txt”;


ifstream archivo (str3); // ERROR
/* Esto lanzará un error, pues la librería fstream no acepta la clase string,
sólo el string de C. Sin embargo, hay una forma de tratar un string de C++ como
uno de C. */

ifstream archivo(str3.c_str());
// Esto sí permitirá ocupar el contenido de str3 para abrir el archivo.
Referencias y material extraído de:
• http://www.cplusplus.com/, apartado Reference → Strings library.
• http://www.cprogramming.com/, apartado Tutorial → Strings.

Вам также может понравиться