62 - Clase string (size - length - empty - at)


Vimos que la clase string en C++ nos facilita trabajar con cadenas de caracteres en nuestros algorítmos.

Como se trata de una clase dispone de un conjunto de métodos que permite acceder a su contenido para manipularla.

Métodos: length() y size()

Estos métodos retornan la cantidad de caracteres que contiene el string. Podemos utilizar indistintamente uno u otro (similar a la función strlen con vectores de caracteres)

Mostrar la cantidad de caracteres de tiene un string empleando estos dos métodos:

#include<string>
#include<iostream>

using namespace std;

int main()
{
    string cadena1 = "Hola";
    cout << "cadena:" << cadena1;
    cout << "\n";
    cout << cadena1.size();
    cout << "\n";
    cout << cadena1.length();
    return 0;
}

Este proyecto lo puede descargar en un zip desde este enlace : Clasestring6.zip

Método: empty()

El método empty retorna true si el string tiene una cadena vacía. Por ejemplo un string vacío se inicia con:

string cad="";

Pero también podemos hacerlo sin asignar un valor (la forma anterior es solo para dejarlo más legible):

string cad;

Problema

Cargar un string por teclado y luego mostrar un mensaje que no se ingresó caracteres por teclado o la cantidad de caracteres que se ingresaron. Emplear el método empty:

#include<string>
#include<iostream>

using namespace std;

int main()
{
    string cadena;
    cout << "Ingrese una cadena:";
    getline(cin, cadena);
    if (cadena.empty())
    {
        cout << "No se ingresaron caracteres por teclado.";
    }
    else
    {
        cout << "La cadena tiene una longitud de:" << cadena.length();
    }
    return 0;
}

Este proyecto lo puede descargar en un zip desde este enlace : Clasestring7.zip

Como el método empty retorna true o false podemos preguntar directamente por el valor devuelto sin utilizar un operador relacional ==:

    if (cadena.empty())

Método: at()

El método at me permite recuperar un caracter de una determinada posición dentro del string, por ejemplo para recuperar el tercer caracter almacenado en el string :

  char letra=str.at(2);

El resultado es idéntico a acceder por medio de subíndices:

  char letra=str[2];

Problema

Cargar un string por teclado y luego mostrar cada caracter separado por un guión:

#include<string>
#include<iostream>

using namespace std;

int main()
{
    string cadena;
    cout << "Ingrese un palabra:";
    getline(cin, cadena);
    for (int f = 0; f < cadena.length(); f++)
    {
        cout << cadena.at(f)<<"-";
    }
    return 0;
}

Este proyecto lo puede descargar en un zip desde este enlace : Clasestring8.zip

Mediante un for accedemos a cada caracter del string y lo mostramos junto al caracter "-".

Tengamos en cuenta que podemos remplazar la llamada al método at por medio del acceso por subíndices:

    for (int f = 0; f < cadena.length(); f++)
    {
        cout << cadena[f]<<"-";
    }

Retornar