std::clase de string en C++

C++ tiene en su definición una forma de representar una secuencia de caracteres como un objeto de la clase . Esta clase se llama std:: string. La clase String almacena los caracteres como una secuencia de bytes con la funcionalidad de permitir el acceso al carácter de un solo byte .

String frente a array de caracteres

Cuerda

array de caracteres

 Una string es una clase que define objetos que se representan como una secuencia de caracteres. Una array de caracteres es simplemente una array de caracteres que puede terminar con un carácter nulo.
En el caso de las strings, la memoria se asigna dinámicamente . Se puede asignar más memoria en tiempo de ejecución bajo demanda. Como no hay memoria preasignada, no se desperdicia memoria . El tamaño de la array de caracteres debe asignarse estáticamente , no se puede asignar más memoria en tiempo de ejecución si es necesario. La memoria asignada no utilizada también se desperdicia
Como las strings se representan como objetos, no se produce el decaimiento de la array . Existe una amenaza de descomposición de la array en el caso de la array de caracteres. 
Las strings son más lentas en comparación con la implementación que con la array de caracteres. La implementación de la array de caracteres es más rápida que std:: string. 
La clase String define una serie de funcionalidades que permiten múltiples operaciones en strings. Las arrays de caracteres no ofrecen muchas funciones integradas para manipular strings.

Operaciones en strings

1) Funciones de entrada

Función Definición
obtener line() Esta función se utiliza para almacenar un flujo de caracteres introducidos por el usuario en la memoria de objetos.
hacer retroceder() Esta función se utiliza para ingresar un carácter al final de la string.
pop_back() Introducida desde C++11 (para strings), esta función se usa para eliminar el último carácter de la string. 

Ejemplo:

CPP

// C++ Program to demonstrate the working of
// getline(), push_back() and pop_back()
#include <iostream>
#include <string> // for string class
using namespace std;
  
// Driver Code
int main()
{
    // Declaring string
    string str;
  
    // Taking string input using getline()
    getline(cin, str);
  
    // Displaying string
    cout << "The initial string is : ";
    cout << str << endl;
  
    // Inserting a character
    str.push_back('s');
  
    // Displaying string
    cout << "The string after push_back operation is : ";
    cout << str << endl;
  
    // Deleting a character
    str.pop_back();
  
    // Displaying string
    cout << "The string after pop_back operation is : ";
    cout << str << endl;
  
    return 0;
}

Producción: 

The initial string is : geeksforgeek
The string after push_back operation is : geeksforgeeks
The string after pop_back operation is : geeksforgeek

2) Funciones de capacidad

Función Definición
capacidad() Esta función devuelve la capacidad asignada a la string, que puede ser igual o mayor que el tamaño de la string. Se asigna espacio adicional para que cuando se agreguen los nuevos caracteres a la string, las operaciones se puedan realizar de manera eficiente.
redimensionar() Esta función cambia el tamaño de la string, el tamaño se puede aumentar o disminuir.
longitud() Esta función encuentra la longitud de la string.
reducir_para_ajustar() Esta función disminuye la capacidad de la string y la hace igual a la capacidad mínima de la string. Esta operación es útil para ahorrar memoria adicional si estamos seguros de que no es necesario realizar ninguna adición adicional de caracteres.

Ejemplo:

CPP

// C++ Program to demonstrate the working of
// capacity(), resize() and shrink_to_fit()
#include <iostream>
#include <string> // for string class
using namespace std;
  
// Driver Code
int main()
{
    // Initializing string
    string str = "geeksforgeeks is for geeks";
  
    // Displaying string
    cout << "The initial string is : ";
    cout << str << endl;
  
    // Resizing string using resize()
    str.resize(13);
  
    // Displaying string
    cout << "The string after resize operation is : ";
    cout << str << endl;
  
    // Displaying capacity of string
    cout << "The capacity of string is : ";
    cout << str.capacity() << endl;
  
    // Displaying length of the string
    cout << "The length of the string is :" << str.length()
         << endl;
  
    // Decreasing the capacity of string
    // using shrink_to_fit()
    str.shrink_to_fit();
  
    // Displaying string
    cout << "The new capacity after shrinking is : ";
    cout << str.capacity() << endl;
  
    return 0;
}
Producción

The initial string is : geeksforgeeks is for geeks
The string after resize operation is : geeksforgeeks
The capacity of string is : 26
The length of the string is :13
The new capacity after shrinking is : 15

3) Funciones de iterador

Función Definición
empezar() Esta función devuelve un iterador al comienzo de la string.
final() Esta función devuelve un iterador al final de la string.
rbegin() Esta función devuelve un iterador inverso que apunta al final de la string.
desgarrar() Esta función devuelve un iterador inverso que apunta al principio de la string.

CPP-STL-Self-Paced-Course

Ejemplo:

CPP

// C++ Program to demonstrate the working of
// begin(), end(), rbegin(), rend()
#include <iostream>
#include <string> // for string class
using namespace std;
  
// Driver Code
int main()
{
    // Initializing string`
    string str = "geeksforgeeks";
  
    // Declaring iterator
    std::string::iterator it;
  
    // Declaring reverse iterator
    std::string::reverse_iterator it1;
  
    // Displaying string
    cout << "The string using forward iterators is : ";
    for (it = str.begin(); it != str.end(); it++)
        cout << *it;
    cout << endl;
  
    // Displaying reverse string
    cout << "The reverse string using reverse iterators is "
            ": ";
    for (it1 = str.rbegin(); it1 != str.rend(); it1++)
        cout << *it1;
    cout << endl;
  
    return 0;
}
Producción

The string using forward iterators is : geeksforgeeks
The reverse string using reverse iterators is : skeegrofskeeg

4) Funciones de manipulación:

Función Definición
copiar(“array de caracteres”, len, pos)  Esta función copia la substring en la array de caracteres de destino mencionada en sus argumentos. Se necesitan 3 argumentos, la array de caracteres de destino, la longitud que se copiará y la posición inicial en la string para comenzar a copiar.
intercambio() Esta función intercambia una string con otra.

Ejemplo:

CPP

// C++ Program to demonstrate the working of
// copy() and swap()
#include <iostream>
#include <string> // for string class
using namespace std;
  
// Driver Code
int main()
{
    // Initializing 1st string
    string str1 = "geeksforgeeks is for geeks";
  
    // Declaring 2nd string
    string str2 = "geeksforgeeks rocks";
  
    // Declaring character array
    char ch[80];
  
    // using copy() to copy elements into char array
    // copies "geeksforgeeks"
    str1.copy(ch, 13, 0);
  
    // Displaying char array
    cout << "The new copied character array is : ";
    cout << ch << endl;
  
    // Displaying strings before swapping
    cout << "The 1st string before swapping is : ";
    cout << str1 << endl;
    cout << "The 2nd string before swapping is : ";
    cout << str2 << endl;
  
    // using swap() to swap string content
    str1.swap(str2);
  
    // Displaying strings after swapping
    cout << "The 1st string after swapping is : ";
    cout << str1 << endl;
    cout << "The 2nd string after swapping is : ";
    cout << str2 << endl;
  
    return 0;
}
Producción

The new copied character array is : geeksforgeeks
The 1st string before swapping is : geeksforgeeks is for geeks
The 2nd string before swapping is : geeksforgeeks rocks
The 1st string after swapping is : geeksforgeeks rocks
The 2nd string after swapping is : geeksforgeeks is for geeks

Debe leer: Clase de string C++ y sus aplicaciones

Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *