std::clase de cadena en C++

C++ tiene en su definición una forma de representar un secuencia de caracteres como 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 acceso al carácter de un solo byte .

Cadena vs matriz de caracteres

Cadena

Matriz de caracteres

 Una cuerda es un clase que define objetos que se representará como una corriente de personajes. Una matriz de caracteres es simplemente una variedad de personajes que puede terminar con un carácter nulo.
En el caso de cadenas la memoria es asignado dinámicamente . Se puede asignar más memoria en tiempo de ejecución según demanda. Como no hay memoria preasignada no se desperdicia memoria . El tamaño de la matriz de caracteres debe ser asignado estáticamente No se puede asignar más memoria en tiempo de ejecución si es necesario. Asignado no utilizado La memoria también se desperdicia.
Como las cadenas se representan como objetos. sin decadencia de matriz ocurre. hay un amenaza de decaimiento de matriz en el caso de la matriz de caracteres. 
Las cuerdas son más lentas. en comparación con la implementación que la matriz de caracteres. Implementación de la matriz de caracteres es más rápida que std:: cadena. 
La clase de cadena define una serie de funcionalidades que permiten múltiples operaciones sobre cadenas. matrices de caracteres no ofrecer muchos funciones incorporadas para manipular cuerdas.

Operaciones sobre cuerdas

1) Funciones de entrada

Función Definición
obtener línea() Esta función se utiliza para almacenar un flujo de caracteres ingresados ​​por el usuario en la memoria del objeto.
empujar_back() Esta función se utiliza para ingresar un carácter al final de la cadena.
pop_back() Introducida desde C++ 11 (para cadenas), esta función se utiliza para eliminar el último carácter de la cadena. 

Ejemplo:

CPP
   // C++ Program to demonstrate the working of   // getline() push_back() and pop_back()   #include          #include         // 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 : The string after push_back operation is : s The string after pop_back operation is :  

Complejidad del tiempo: O(1)

Complejidad espacial: O (n) donde n es el tamaño de la cuerda

2) Funciones de capacidad

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

Ejemplo:

CPP
   // C++ Program to demonstrate the working of   // capacity() resize() and shrink_to_fit()   #include          #include         // 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 : 13 

Complejidad del tiempo: O(1)

Complejidad espacial: O (n) donde n es el tamaño de la cuerda

3) Funciones de iterador

Función Definición
comenzar() Esta función devuelve un iterador al principio de la cadena.
fin() Esta función devuelve un iterador al final de la cadena.
comenzar() Esta función devuelve un iterador inverso que apunta al final de la cadena.
prestar() Esta función devuelve un iterador inverso que apunta al principio anterior de la cadena.
comenzar() Esta función devuelve un iterador constante que apunta al comienzo de la cadena y no se puede utilizar para modificar el contenido al que apunta.
algunos() Esta función devuelve un iterador constante que apunta al siguiente final de la cadena y no se puede utilizar para modificar el contenido al que apunta.
crbegin() Esta función devuelve un iterador inverso constante que apunta al final de la cadena y no se puede utilizar para modificar el contenido al que apunta.
crédito() Esta función devuelve un iterador inverso constante que apunta al principio anterior de la cadena y no se puede utilizar para modificar el contenido al que apunta.

Algoritmo:

  1. Declarar una cadena
  2. Intente modificar el elemento de la cadena.
  3. Muestra todas las iteraciones.

Ejemplo:

CPP
   // C++ Program to demonstrate the working of   // begin() end() rbegin() rend() cbegin() cend() crbegin() crend()   #include          #include         // 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  ;      cout   < <  'Str:'   < <  str   < <  '  n  '  ;      // Displaying string      cout      < <     'The string using forward iterators is : '  ;      for     (  it     =     str  .  begin  ();     it     !=     str  .  end  ();     it  ++  ){      if  (  it     ==     str  .  begin  ())     *  it  =  'G'  ;      cout      < <     *  it  ;      }      cout      < <     endl  ;      str     =     'geeksforgeeks'  ;      // Displaying reverse string      cout      < <     'The reverse string using reverse iterators is '      ': '  ;      for     (  it1     =     str  .  rbegin  ();     it1     !=     str  .  rend  ();     it1  ++  ){      if  (  it1     ==     str  .  rbegin  ())     *  it1  =  'S'  ;      cout      < <     *  it1  ;      }      cout      < <     endl  ;          str     =     'geeksforgeeks'  ;      //Displaying String      cout   < <  'The string using constant forward iterator is :'  ;      for  (  auto     it2     =     str  .  cbegin  ();     it2  !=  str  .  cend  ();     it2  ++  ){      //if(it2 == str.cbegin()) *it2='G';      //here modification is NOT Possible      //error: assignment of read-only location       //As it is a pointer to the const content but we can inc/dec-rement the iterator      cout   < <*  it2  ;      }      cout   < <  '  n  '  ;          str     =     'geeksforgeeks'  ;      //Displaying String in reverse      cout   < <  'The reverse string using constant reverse iterator is :'  ;      for  (  auto     it3     =     str  .  crbegin  ();     it3  !=  str  .  crend  ();     it3  ++  ){      //if(it2 == str.cbegin()) *it2='S';      //here modification is NOT Possible      //error: assignment of read-only location       //As it is a pointer to the const content but we can inc/dec-rement the iterator      cout   < <*  it3  ;      }      cout   < <  '  n  '  ;      return     0  ;   }   //Code modified by Balakrishnan R (rbkraj000)   

Producción
Str:geeksforgeeks The string using forward iterators is : Geeksforgeeks The reverse string using reverse iterators is : Skeegrofskeeg The string using constant forward iterator is :geeksforgeeks The reverse string using constant reverse iterator is :skeegrofskeeg 

Complejidad del tiempo: O(1)

Complejidad espacial: O (n) donde n es el tamaño de la cuerda

4) Funciones de manipulación:

Función Definición
copiar('matriz de caracteres' len pos)  Esta función copia la subcadena en la matriz de caracteres de destino mencionada en sus argumentos. Se necesitan 3 argumentos, la longitud de la matriz de caracteres de destino para copiar y la posición inicial en la cadena para comenzar a copiar.
intercambio() Esta función intercambia una cadena con otra.

Ejemplo:

CPP
   // C++ Program to demonstrate the working of   // copy() and swap()   #include          #include         // 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 cadena C++ y sus aplicaciones