Dominando Cadenas en C++: Estilo C vs std::string
C++ proporciona los siguientes dos tipos de representaciones de cadenas:
- La cadena de caracteres estilo C.
- El tipo de clase string introducido con C++ Estándar.
La Cadena de Caracteres Estilo C
La cadena de caracteres estilo C se originó dentro del lenguaje C y continúa siendo soportada dentro de C++. Esta cadena es en realidad un array unidimensional de caracteres que termina con un carácter nulo '\0'. Así, una cadena terminada en nulo contiene los caracteres que componen la cadena seguidos por un nulo.
La siguiente declaración e inicialización crean una cadena que consiste en la palabra "Hola". Para mantener el carácter nulo al final del array, el tamaño del array de caracteres que contiene la cadena es uno más que el número de caracteres en la palabra "Hola".
char saludo[6] = {'H', 'o', 'l', 'a', '\0'};
Si sigues la regla de inicialización de arrays, entonces puedes escribir la declaración anterior de la siguiente manera:
char saludo[] = "Hola";
La siguiente es la presentación en memoria de la cadena definida anteriormente en C/C++:

En realidad, no colocas el carácter nulo al final de una constante de cadena. El compilador de C++ coloca automáticamente el '\0' al final de la cadena cuando inicializa el array. Intentemos imprimir la cadena mencionada anteriormente:
#include <iostream>
using namespace std;
int main() {
char saludo[6] = {'H', 'o', 'l', 'a', '\0'};
cout << "Mensaje de saludo: ";
cout << saludo << endl;
return 0;
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
Mensaje de saludo: Hola
C++ soporta una amplia gama de funciones que manipulan cadenas terminadas en nulo:
| Nº | Función y Propósito |
|---|---|
| 1 | strcpy(s1, s2); Copia la cadena s2 en la cadena s1. |
| 2 | strcat(s1, s2); Concatena la cadena s2 al final de la cadena s1. |
| 3 | strlen(s1); Retorna la longitud de la cadena s1. |
| 4 | strcmp(s1, s2); Retorna 0 si s1 y s2 son iguales; menor que 0 si s1<s2; mayor que 0 si s1>s2. |
| 5 | strchr(s1, ch); Retorna un puntero a la primera ocurrencia del carácter ch en la cadena s1. |
| 6 | strstr(s1, s2); Retorna un puntero a la primera ocurrencia de la cadena s2 en la cadena s1. |
El siguiente ejemplo hace uso de algunas de las funciones mencionadas anteriormente:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[10] = "Hola";
char str2[10] = "Mundo";
char str3[10];
int len;
// copia str1 en str3
strcpy(str3, str1);
cout << "strcpy(str3, str1): " << str3 << endl;
// concatena str1 y str2
strcat(str1, str2);
cout << "strcat(str1, str2): " << str1 << endl;
// longitud total de str1 después de concatenación
len = strlen(str1);
cout << "strlen(str1): " << len << endl;
return 0;
}
Cuando el código anterior se compila y ejecuta, produce un resultado como el siguiente:
strcpy(str3, str1): Hola
strcat(str1, str2): HolaMundo
strlen(str1): 10
La Clase String en C++
La biblioteca estándar de C++ proporciona un tipo de clase string que soporta todas las operaciones mencionadas anteriormente, además de mucha más funcionalidad. Veamos el siguiente ejemplo:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "Hola";
string str2 = "Mundo";
string str3;
int len;
// copia str1 en str3
str3 = str1;
cout << "str3: " << str3 << endl;
// concatena str1 y str2
str3 = str1 + str2;
cout << "str1 + str2: " << str3 << endl;
// longitud total de str3 después de concatenación
len = str3.size();
cout << "str3.size(): " << len << endl;
return 0;
}
Cuando el código anterior se compila y ejecuta, produce un resultado como el siguiente:
str3: Hola
str1 + str2: HolaMundo
str3.size(): 10
Lenguaje C
- Dominando strings en C#: Fundamentos, operaciones y técnicas avanzadas
- Dominando los Operadores en C++: Guía Completa con Ejemplos Prácticos
- Comentarios en C++: Mejores Prácticas para Código Legible y Mantenible
- Dominando las plantillas de clase en C++: guía práctica
- Variables y tipos de datos en C++: Guía experta sobre int, double, char, string, bool
- Dominando funciones de cadena en C++: strcpy, strcat, strlen, strcmp – Ejemplos prácticos
- Cadenas en C hechas fáciles: Declaración, entrada, salida y funciones de biblioteca
- Lenguaje de Programación C++: Visión General y Características Clave
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando representaciones String en Enums de Java
- Clase String en Java: Dominando Creación y Manipulación de Cadenas