Como criar uma cadeia dinâmica em c ++

cordas dinâmicas alterar o seu tamanho na memória com base na entrada do usuário.

tipos de dados dinâmicos não têm um tamanho fixo. Quando um computador armazena um número, que utiliza o mesmo número de bytes para armazenar o número "0" e o número "20.000." Mas tentar armazenar uma frase e o panorama muda drasticamente. Uma vez que cada frase tem um comprimento diferente, a memória usada para armazenar a frase tem de mudar dinamicamente. Padrão C não incluía um tipo de dados, e projetar uma dinâmica tipo de dados string (ou classe string) tornou-se quase um rito de passagem de qualquer nova / C programador C ++.

Coisas que você precisa

  • Computador
  • C ++ Compiler (recomendado: Visual C ++ Express)

Projetar uma classe string

  • Visualize as características de sua classe string. Sua cadeia deve ter o seguinte:

    tamanho dinâmico (muda com a entrada do usuário, ou cessão).

    Ser capaz de saber o tamanho de sua cadeia.

    Saída da cadeia armazenada na memória.

    Armazenar o tamanho.

    Armazenar o primeiro caractere da nossa string (uma vez que é dinâmico, você não sabe onde termina.)

  • Separado que recursos de sua classe string são de informação (ou dados) e quais são as funções. Geralmente, tudo o que envolve a ação é uma função. A partir de nossa lista:

    -gt tamanho dinâmico; Função baseado em como você construir uma string.

    Saber o tamanho do -gt string; Função.

    Saída do -gt string; Função.

    Armazenar o -gt tamanho; dados / informações.

    Armazenar o início da cadeia -gt; dados / informações.

  • Definir o papel de cada função, e o tipo de dados membros de sua classe em termos simples. A partir da lista anterior:

    Dinâmico Tamanho - Função - Constrói a corda.

    Saber o tamanho - Função - Retorna o tamanho de cadeia.

    Output a string - Função - Retorna o conteúdo de cadeia.

    Armazenar o tamanho - dados / informações - deve ser um inteiro positivo.

    Armazenar o início da cadeia - dados / informações - um personagem.

Implementando a classe String - cabeçalho de arquivo

  • Crie um arquivo de cabeçalho chamado MyString.h (-gt arquivo; Adicionar -gt; cabeçalho do arquivo). Um arquivo de cabeçalho é como um índice para o seu código.

  • Defina sua classe no arquivo de cabeçalho. Este é o código:

    mystring classe {

  • Criar funções públicas para lidar com todas as funções em seu projeto. Este é o código:

    público:

    mystring () - // cria uma cadeia vazia

    mystring (const char *) - // cria e inicializa a corda para algum valor (entre parênteses)

    ~ Mystring () - // desaloca recursos de memória dinâmica

    getSize int () - // mostra-nos o tamanho da cadeia

    char * outputmystring () - // Mostra a string

  • Criar membros de dados privados para armazenar os dados da sua string. Este é o código:

    privado:

    int _size- // armazena o tamanho cadeia

    carbonizar _mystr- /este é um membro de dados que aponta para o primeiro caractere da string. Se sabemos que o primeiro caractere eo tamanho da cadeia, podemos acessar todos os seus personagens * /

    }

  • Digite o seu código de arquivo de cabeçalho completo (você pode copiar e colar a partir de aqui):

    / MyString.h /

    mystring classe {

    público:

    mystring ();

    mystring (const char *);

    ~ Mystring ();

    getSize int ();

    char * outputmystring ();

    privado:

    int _size;

    char * _mystr;

    }

Implementando a classe String - arquivo de código

  • Crie um arquivo CPP correspondência chamado MyString.cpp (File-gt; Adicionar -gt; cpp - arquivo vazio). Aqui, você vai incluir as definições para a função no arquivo de cabeçalho MyString.h. Assim como um livro, arquivos de cabeçalho armazenar as principais tittles e arquivos cpp armazenar o conteúdo e definições de cada til.

  • Incluir o cstring e bibliotecas iostream. Este é o código:

    / MyString.cpp /

    incluir
    incluir


  • Definir as funções de construção (construção vazia e construção de parâmetro). Aqui está o código:

    mystring :: mystring () // construtor vazio

    {

    _size = 0;

    _mystr = 0;

    }

    mystring :: mystring (char const str) /construções e inicializa string para um valor * /

    {

    if (str!)

    {_size = 0- _mystr = 0-} / se nenhum valor, corda está vazio /

    outro

    {_size = Strlen (str);

    _string = new char [_size +1] - /esta é a atribuição dinâmica da memória, com base no tamanho do parâmetro/

    strcopy (_string, str);

    }

    }

  • Definir a função de destruidor. Esta função é usada para de-alocar a memória dinâmica. Toda vez que a memória usada alterações, o computador deve saber que ele pode usar essa parte da memória para outro fins-este processo é chamado de-alocação. O código:

    mystring :: ~ mystring

    {Delete [] _mystr-} /desaloca nossa memória dinâmica /

  • Defina a função para retornar o tamanho de cordas e de saída da cadeia. O tamanho é simples. Apenas exibir o valor de _size:

    mystring int :: getSize () {return (_size) -}

    Para emitir a corda, vamos saída de cada personagem até chegar ao final da cadeia (que passa a ser o valor de _size):

    vazio mystring :: outputmystring ()

    {For (int count = 0 - contagem == size - count ++)

    {cout lt; lt; _mystr [contar] -}

    cout lt; lt; endl-}

  • Aqui está o código completo para MyString.cpp:

    / MyString.cpp /

    incluir
    incluir

    mystring :: mystring () // construtor vazio

    {

    _size = 0;

    _mystr = 0;

    }

    mystring :: mystring (char const str) /construções e inicializa string para um valor * /

    {

    if (str!)

    {_size = 0- _mystr = 0-} / se nenhum valor, corda está vazio /

    outro

    {_size = Strlen (str);

    _string = new char [_size +1] - /esta é a atribuição dinâmica da memória, com base no tamanho do parâmetro/

    strcopy (_string, str);

    }

    }

    mystring :: ~ mystring

    {Delete [] _mystr-} /desaloca nossa memória dinâmica /

    mystring int :: getSize () {return (_size) -}

    vazio mystring :: outputmystring ()

    {For (int count = 0 - contagem == size - count ++)

    {cout lt; lt; _mystr [contar] -}

    cout lt; lt; endl-}

dicas & avisos

  • Você sempre pode melhorar a sua classe mystring adicionando funções e operadores. Tenha cuidado ao digitar, mesmo pequenos erros podem causar erros que são muito difíceis de rastrear.
De esta maneira? Compartilhar em redes sociais:

LiveInternet