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 /
incluirincluirDefinir 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 /
incluirincluirmystring :: 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.