En este post de programación en C++ con cadenas o strings te mostraré cómo extraer una subcadena de una cadena.
Dicho en otras palabras, te enseñaré a cortar una cadena en C++. Por ejemplo, extraer solo los primeros 4 N caracteres de una string o extraer una porción de la misma.
Todo esto lo haremos con la función substr
de C++.
Explicando la función
Vamos a trabajar con substr en C++. Esta función la tienen las cadenas de este lenguaje, de modo que la invocamos así:
cadena_nueva = cadena.substr()
Pero debemos pasarle argumentos a substr
. El primer argumento indica el índice desde dónde comenzar a extraer, y el segundo argumento indica cuántos caracteres extraer.
No te confundas, pues para cortar una cadena no basta con indicar el inicio y fin, sino que debemos especificar el inicio y la cantidad que se debe extraer.
Ejemplo: extraer subcadena con C++
En este ejemplo tenemos un nombre con apellidos, pero vamos a cortar la cadena de modo que ahora obtengamos una nueva porción que solo tenga el nombre.
Debido a que sabemos que el nombre tiene 4 letras podemos invocar a substr
para que tome 4 caracteres desde el índice 0. Así:
#include <iostream>
using namespace std;
int main()
{
// https://parzibyte.me/blog
string nombreCompleto = "Luis Cabrera Benito";
// Extraer solo el nombre. Desde 0 tomar 4 caracteres
string nombre = nombreCompleto.substr(0, 4);
cout << "El nombre completo es " << nombreCompleto << " y el nombre sin apellidos es '" << nombre << "'" << endl;
}
La salida ya la pudiste ver en la imagen anterior.
Otro ejemplo para cortar una string con C++
Para finalizar el post (pues con la sintaxis es suficiente) te mostraré otro ejemplo. En este caso vamos a extraer el año, mes y día de una fecha.
La fecha que vamos a descomponer tiene el formato YYYYMMDD
. El código para este caso es el siguiente:
#include <iostream>
using namespace std;
int main()
{
// https://parzibyte.me/blog
string fecha = "20211128";
string anio = fecha.substr(0, 4);
string mes = fecha.substr(4, 2);
string dia = fecha.substr(6, 2);
// Extraer solo el nombre. Desde 0 tomar 4 caracteres
cout << "Año " << anio << " Mes " << mes << " Día " << dia << endl;
}
Ahora invocamos a substr
cambiando un poco los argumentos. Para el año extraemos 4 caracteres desde el índice 0, para el mes tomamos 2 caracteres desde el índice 4 y finalmente para el día tomamos 2 caracteres desde el índice 6.
La salida en este caso es: Año 2021 Mes 11 Día 28
.
Finalmente te dejo con más tutoriales de programación en C++.