classe std::string em C++

C++ tem em sua definição uma forma de representar um sequência de caracteres como objeto da classe . Esta classe é chamada std::string. A classe string armazena os caracteres como uma sequência de bytes com a funcionalidade de permitir acesso ao caractere de byte único .

String vs Matriz de Caracteres

Corda

Matriz de caracteres

classe que define objetos que ser representado como um fluxo de caracteres. Uma matriz de caracteres é simplesmente um matriz de caracteres que pode ser encerrado por um caractere nulo.
No caso de strings a memória é alocado dinamicamente . Mais memória pode ser alocada em tempo de execução sob demanda. Como nenhuma memória é pré-alocada nenhuma memória é desperdiçada . O tamanho da matriz de caracteres deve ser alocado estaticamente mais memória não pode ser alocada em tempo de execução, se necessário. Alocado não utilizado memória também é desperdiçada
Como strings são representadas como objetos sem decaimento da matriz ocorre. Existe um ameaça de decadência da matriz no caso da matriz de caracteres. 
As cordas são mais lentas quando comparado à implementação do que à matriz de caracteres. Implementação de matriz de caracteres é mais rápida do que std::string. 
A classe String define uma série de funcionalidades que permitem múltiplas operações em strings. Matrizes de caracteres não ofereça muitos funções integradas para manipular cordas.

Operações em Strings

1) Funções de entrada

Função Definição
getline() Esta função é usada para armazenar um fluxo de caracteres inseridos pelo usuário na memória do objeto.
push_back() Esta função é usada para inserir um caractere no final da string.
pop_back() Introduzida a partir do C++ 11 (para strings), esta função é usada para excluir o último caractere da string. 

Exemplo:

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  ;   }   

Saída
The initial string is : The string after push_back operation is : s The string after pop_back operation is :  

Complexidade de tempo: O(1)

Complexidade Espacial: O(n) onde n é o tamanho da string

2) Funções de capacidade

Função Definição
capacidade() Esta função retorna a capacidade alocada para a string que pode ser igual ou maior que o tamanho da string. Espaço adicional é alocado para que, quando novos caracteres forem adicionados à string, as operações possam ser realizadas com eficiência.
redimensionar() Esta função altera o tamanho da string, o tamanho pode ser aumentado ou diminuído.
comprimento() Esta função encontra o comprimento da string.
encolher_para_ajustar() Esta função diminui a capacidade da string e a torna igual à capacidade mínima da string. Esta operação é útil para economizar memória adicional se tivermos certeza de que nenhuma adição adicional de caracteres será necessária.

Exemplo:

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  ;   }   

Saída
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 

Complexidade de tempo: O(1)

Complexidade Espacial: O(n) onde n é o tamanho da string

3) Funções Iteradoras

Função Definição
começar() Esta função retorna um iterador para o início da string.
fim() Esta função retorna um iterador próximo ao final da string.
rbegin() Esta função retorna um iterador reverso apontando para o final da string.
Esta função retorna um iterador reverso apontando para o início anterior da string.
cbegin() Esta função retorna um iterador constante apontando para o início da string e não pode ser usado para modificar o conteúdo para o qual aponta.
um pouco() Esta função retorna um iterador constante apontando para o próximo final da string e não pode ser usado para modificar o conteúdo para o qual aponta.
crbegin() Esta função retorna um iterador reverso constante apontando para o final da string e não pode ser usado para modificar o conteúdo para o qual aponta.
crédito() Esta função retorna um iterador reverso constante apontando para o início anterior da string e não pode ser usado para modificar o conteúdo para o qual aponta.

Algoritmo:

  1. Declarar uma string
  2. Tente iterar a string usando todos os tipos de iteradores
  3. Tente modificar o elemento da string.
  4. Exibir todas as iterações.

Exemplo:

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)   

Saída
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 

Complexidade de tempo: O(1)

Complexidade Espacial: O(n) onde n é o tamanho da string

4) Manipulando Funções:

Função Definição
copy('matriz de caracteres' len pos)  Esta função copia a substring na matriz de caracteres de destino mencionada em seus argumentos. São necessários 3 argumentos, o comprimento da matriz de caracteres alvo para ser copiado e a posição inicial na string para iniciar a cópia.
trocar() Esta função troca uma string por outra

Exemplo:

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  ;   }   

Saída
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 


Deve ler: Classe String C++ e suas aplicações