Gráfico de comparação
Base para Comparação | Matriz de caracteres | Corda |
---|---|---|
Basic | A matriz de caracteres é uma coleção de variáveis, do tipo de dados de caractere. | String é classe e variáveis de string são o objeto da classe "string". |
Sintaxe | char array_name [tamanho]; | string string_name; |
Indexação | Um caractere individual em uma matriz de caracteres pode ser acessado por seu índice na matriz. | Na string, o caractere específico pode ser acessado pela função "string_name.charAt (index)". |
Tipo de dados | Uma matriz de caracteres não define um tipo de dados. | Uma string define um tipo de dados em C ++. |
Operadores | Operadores em C ++ não podem ser aplicados na matriz de caracteres. | Você pode aplicar o operador C ++ padrão na string. |
fronteira | Os limites das matrizes são facilmente superados. | Os limites não serão superados. |
Acesso | Acesso rápido. | Acesso lento. |
Definição de matriz de caracteres
Um array de caracteres é uma coleção de variáveis do tipo de dados “char”; pode ser um array unidimensional ou um array bidimensional. Também é chamado de “string terminada com nulo”. Um array de caracteres é uma seqüência dos caracteres que são armazenados em endereços de memória consecutivos. Em uma matriz de caracteres, um caractere específico pode ser acessado por seu índice. Um “caractere nulo” termina a matriz de caracteres ”.
Vamos dar um exemplo de matriz de caracteres: -
char nome [] = {'A', 'j', 'a', 'y', '\ 0'}; ou nome do char [] = "Ajay";
Aqui, “char” é um tipo de dado de caractere, “nome” é um nome de variável da matriz de caracteres. Eu mostrei duas maneiras de inicializar o array de caracteres. No primeiro método, o nulo é mencionado explicitamente e no segundo método, o compilador insere automaticamente o nulo.
O final da string é sempre um caractere nulo; é o caractere de terminação da matriz de caracteres. Uma matriz de caracteres não é um tipo de dados interno; nós criamos array de caracteres declarando isso. Você não pode aplicar operadores padrão em uma matriz de caracteres. Para operar na matriz de caracteres, há algumas funções internas, como, (strlen (), strlwr (), strupr (), strcat ()). Como os operadores padrão não podem ser aplicados a uma matriz de caracteres, eles não podem participar de nenhuma expressão.
O ponteiro de caractere para uma matriz de caracteres também pode ser criado.
Vamos entender isso com um exemplo.
char s1 [] = "Olá"; char s2 [] = "Senhor"; s1 = s1 + s2; // operadores de erro não podem ser aplicados s2 = s1; // erro Character pointer char * s = "Manhã"; char * p; p = s; // executa
No exemplo acima, nós tínhamos declarado dois caracteres s1, s2 e dois caracteres s e p. O array de caracteres s1 e s2 são inicializados, podemos ver que nem o operador de adição (+) nem o operador de atribuição trabalham no array de caracteres. Mas um ponteiro de caractere pode ser atribuído a outro ponteiro de caractere.
Lembre-se que uma vez que a matriz de caracteres é inicializada, ela não pode ser inicializada novamente para outro conjunto de caracteres. O acesso a uma matriz de caracteres ou a uma string terminada em nulo é rápido em comparação com a string em C ++.
Definição de String
Uma string não é um tipo de dados interno de C ++. É um objeto de classe do tipo "string". Como em C ++, criar uma classe é como criar um “tipo”. A classe "string" é uma parte da biblioteca C ++. Ele contém o conjunto de caracteres ou matriz de caracteres como um todo. Há três razões por trás do desenvolvimento de uma classe de string padrão.
- Primeiro é a “consistência”, os arrays de caracteres não são tipos de dados por si só.
- Segundo é “conveniência”, você não pode usar operadores padrão em uma matriz de caracteres.
- Em terceiro lugar está a “segurança”, os limites da matriz são facilmente superados.
Vamos entender as cordas com um exemplo.
string s1; s1 = "Olá"; string s2 ("bom dia"); string s3 = "Hennery"; string s4;
Na declaração acima, quatro variáveis de string ou objetos (s1, s2, s3, s4) são declarados. Na declaração acima, eu mostrei três maneiras de inicializar a string. A string s1 é declarada e, em seguida, inicializada separadamente. A string s2 é inicializada pelo construtor da classe “String”. A string s3 é inicializada no momento de sua declaração como o tipo de dados normal. Podemos aplicar o operador padrão às variáveis de string.
s4 = s1 // atribuindo um objeto string a outro s4 = s1 + s2; // adicionando duas strings e armazenando o resultado na terceira string if (s3> s2) // comparando duas strings strings s5 (s1); criando um novo objeto string usando o objeto string existente
No código acima, vários operadores são aplicados em uma string e várias operações são executadas. A primeira instrução copia um objeto de string para outro objeto de string. Na segunda instrução, duas cadeias são concatenadas e armazenadas em uma terceira cadeia. Na terceira instrução, duas cadeias são comparadas. Na quarta instrução, um novo objeto de string é criado usando o objeto de string já existente.
O acesso à string é lento em comparação com uma matriz de caracteres ou string terminada com nulo.
Principais diferenças entre array e string de caracteres
- Uma matriz de caracteres é uma coleção de variáveis que são de tipo de dados de caractere. String é uma classe que é instanciada para declarar strings.
- Usando o valor do índice, você pode acessar um caractere de uma matriz de caracteres. Por outro lado, se você quiser acessar um caractere específico em uma string, você pode acessá-lo pela função string's_name.charAt (index).
- Como uma matriz não é um tipo de dados de forma semelhante, um caractere também não é um tipo de dados. Por outro lado, String sendo uma classe age como um tipo de referência, portanto, pode-se dizer que String é um tipo de dado.
- Você não pode aplicar nenhum operador em um array de caracteres, ao passo que você pode aplicar operadores em String.
- Ser uma matriz de caracteres de matriz tem um comprimento fixo e seus limites podem ser facilmente superados. Onde String não tem limites.
- Os elementos de matriz são armazenados em um local de memória contíguo, portanto, podem ser acessados mais rapidamente do que a variável de string.
Conclusão:
Incapacidade de operar na matriz de caracteres elevou o desenvolvimento da classe de string padrão.