John Tortugo

Classe string::string – construtores

Publicado por: John em: 18 18UTC Outubro 18UTC 2008

Olá. Iniciarei hoje uma série de posts sobre a linguagem C++; começarei descrevendo a classe string. Na maior parte do tempo o que estarei fazendo é traduzir os textos encontrados no site cplusplus.com. Todos estes métodos alocam memória para um objeto string e inicializam o seu conteúdo. Os construtores que existem para a classe são:

explicit string();

O conteúdo da string é inicializado com uma string vazia “”.

string ( const string& str );

O conteúdo da string é inicializado com uma copia da string passada como parâmetro.

string ( const string& str, size_t pos, size_t n = npos );

O conteúdo da string é inicializado com uma substring de str. A substring utilizada é a parte de str que inicia na posição pos e tem n caracteres de comprimento se não ouver quantidade de caracteres suficientes em str obtem até o último caractere.

string ( const char * s, size_t n );

O conteúdo da string é inicializado com uma copia dos n primeiros caracteres da string (C-style) apontada por s.

string ( const char * s );

O conteúdo da string é inicializado com uma copia (C-style) da string apontada por s.

string ( size_t n, char c );

O conteúdo da string é inicializado o caractere c repetido n vezes.

template<class InputIterator> string (InputIterator begin, InputIterator end);

Se begin e/ou end é um inteiro então é efetuado um cast para que o construtor citado acima seja utilizado, tornando-se então: string(static_cast<size_t>(begin),static_cast<char>(end)); De outra forma os parametros são utilizados para selecionar os caracteres que serão utilizados para inicializar a string, o último caracter da string será o caractere apontado por end-1.

Parâmetros:

str Outro objeto da classe string que será utilizado para inicializar o objeto atual.

pos Posição inicial da substring de str que será utilizada para inicializar o novo objeto, iniciando na posição 0. Se este valor exceder o tamanho de str uma exceção será disparada (out_of_range exception).

n Número de caracteres que o novo objeto terá. Para o terceiro construtor o valor padrão deste parâmetro é npos. npos é uma constante com o maior valor possível para uma variável do tipo size_t. No caso padrão, todos os caracteres de str serão copiados.

s Array com uma sequência de caracteres. No quarto construtor a quantidade de caracteres que serão copiados será n mesmo se a string original conter caracteres null (\n), porém o quinto construtor é baseado no caractere null (\n). c Valor de um caractere que deverá ser utilizado para inicializar a string. Este caractere será repetido n vezes.

begin Se jutamente com end, ambos forem inteiros, será equivalente a utilizar o parâmetro n, de outra forma será considerado com o um iterator referindo-se ao inicio de uma sequência de caracteres.

end Se jutamente com begin, ambos forem inteiros, será equivalente a utilizar o parâmetro n, de outra forma será considerado com o um iterator referindo-se ao fim de uma sequência de caracteres.

Exemplo:

// string constructor
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string s0 ("Initial string");

  // constructors used in the same order as described above:
  string s1;
  string s2 (s0);
  string s3 (s0, 8, 3);
  string s4 ("A character sequence", 6);
  string s5 ("Another character sequence");
  string s6 (10, 'x');
  string s7a (10, 42);
  string s7b (s0.begin(), s0.begin()+7);

  cout << "s1: " << s1 << "\ns2: " << s2 << "\ns3: " << s3;
  cout << "\ns4: " << s4 << "\ns5: " << s5 << "\ns6: " << s6;
  cout << "\ns7a: " << s7a << "\ns7b: " << s7b << endl;

  return 0;
}

Saída:

s1:
s2: Initial string
s3: str
s4: A char
s5: Another character sequence
s6: xxxxxxxxxx
s7a: **********
s7b: Initial

Este primeiro post foi básico mas é para servir de aquecimento, espero que algum dia seja util para alguém. Até a próxima. John!

Deixe uma resposta