Matriz de seqüência de caracteres em C ++ - Acesse os elementos da matriz de strings - Alocação

Índice:

Anonim

Introdução à matriz de seqüência de caracteres em C ++

Existem muitos tipos de dados em C ++, como número inteiro, número flutuante, caractere, sequência. O tipo de dados da sequência é uma matriz de caracteres que termina com um caractere nulo ('\ 0') que indica o final da matriz ou sequência. C não os possuía como tal, a sequência de tipos de dados, por causa da qual tivemos que formar uma matriz de caracteres para formar uma sequência. Em C ++, temos a cadeia de caracteres de tipo de dados incorporada.

Exemplo de caractere: 'a' ou 'A'

Exemplo de string (C ++): "English"

String: matriz de caracteres: String (0) = 'E'

String (1) = 'n'

String (2) = 'g'

String (3) = 'l'

String (4) = 'i'

String (5) = 's'

String (6) = 'h'

String (7) = '\ 0'

As strings podem ser declaradas, escritas e impressas diretamente em C ++. Além disso, cada caractere em uma sequência pode ser acessado usando um índice semelhante à indexação na matriz. No caso da string, quando lemos na forma de uma matriz de caracteres usando scanf (), ela interrompe a string ou a função de leitura quando encontra o primeiro espaço em branco. Para evitar isso, a função gets () pode ser usada. Isso lê uma linha inteira e para de ler apenas quando o usuário pressiona 'Enter'.

Matriz de seqüência de caracteres em C ++ uma matriz de várias seqüências de caracteres

Matriz de strings ou Matriz de strings é uma matriz de várias strings. Isso pode ser declarado da seguinte maneira:

string Animals(4) = ("Elephant", "Fox", "Lion", "Tiger");

Para imprimir toda a matriz de strings, o loop for pode ser usado:

Código:

for(int i = 0; i<4; i++) (
cout << Animals(i) << endl;
)

Resultado:

Como acessar os elementos da matriz de strings?

A matriz de strings é semelhante a uma matriz bidimensional. A primeira dimensão ou índice especifica o índice da string da 1ª palavra / string do tipo array ou da palavra / string e assim por diante. Enquanto a segunda dimensão ou índice especifica qual caractere nessa palavra / sequência específica.

Para explicar com um exemplo claro:

Animals(2)(1) = 'i'

No exemplo acima, o primeiro índice '2' especifica que é a string da matriz: “Tiger”. O segundo índice '1' especifica que é a segunda letra ou índice 1 da palavra “tigre”. Usando a indexação bidimensional, cada caractere de cada sequência pode ser acessado facilmente.

Alocação ou definição de matriz de strings

Existem diferentes métodos de alocação de uma matriz de strings:

1. Matriz 2D de Char (que também pode ser usada em C)

char Nome (número máximo de elementos) (tamanho máximo de cada elemento)

cor do caracter (4) (8) = ("azul", "vermelho", "branco", "preto")

Código:

int main() (
char color(4)(8) = (“blue”, “red”, “white”, “black”);
for(int i = 0; i<4; i++) (
cout << color(i) << endl;
)
)

Saída :

Aqui a cor da matriz é de tamanho fixo, ou seja, o número de elementos é fixo e também o número de caracteres ou tamanhos do elemento também é fixo. O número máximo de elementos que podem ser definidos é 4 e cada um pode ter no máximo 8 caracteres, não mais que isso. Essa é a principal barreira na matriz de caracteres 2D.

2. Matriz com a palavra-chave String (possível apenas em C ++)

string Nome (número máximo de elementos)

cor da corda (4) = ("azul", "vermelho", "branco", "preto")

Código:

int main() (
string color(4) = (“blue”, “red”, “white”, “black”);
for(int i = 0; i<4; i++) (
cout << color(i) << endl;
)
)

Saída :

Aqui, apenas uma dimensão é corrigida quando a declaramos como uma matriz de strings. Somente o número de elementos é fixo. O tamanho do elemento pode variar. Mas, especificando a segunda dimensão, podemos acessar ou exibir o caractere específico de uma respectiva string.

3. Usando vetores em C ++

nome do vetor

cor do vetor

Código:

#include
#include
using namespace std;
int main()
(
vector color;
color.push_back("blue");
color.push_back("red");
color.push_back("white");
color.push_back("black");
for(int i = 0; i cout << color(i) << endl;
)
return 0;
)
#include
#include
using namespace std;
int main()
(
vector color;
color.push_back("blue");
color.push_back("red");
color.push_back("white");
color.push_back("black");
for(int i = 0; i cout << color(i) << endl;
)
return 0;
)

Resultado:

Aqui é alocado dinamicamente, a memória é alocada do heap. O tamanho não é fixo. Pode aumentar ou diminuir de acordo com o número de elementos. No caso de alocar dinamicamente um array de strings usando o comando “new”, precisamos desalocar manualmente a memória alocada. Mas no caso do vetor, isso não é necessário. A realocação é possível no vetor, enquanto não é possível na matriz alocada dinamicamente.

4. Passando o array de strings em uma função

Matriz de seqüência de caracteres pode ser passada para uma função semelhante a Como passamos uma matriz.

Código:

#include
#include
using namespace std;
void display(string s(5))(
cout << s(2) ;
)
int main() (
string str(5) = ("Good", "Bad", "Positive", "Negative");
display(str);
)

Saída :

Aqui, estamos passando o array de strings str como um parâmetro para uma função "display" que imprime o terceiro elemento do array de strings ("Positive").

5. Copiando de String Array para outro

Para copiar de uma matriz de strings para outra, devemos copiar cada elemento individualmente, mas a matriz inteira não pode ser copiada de uma só vez.

Código:

int main() (
string str(4) = ("Good", "Bad", "Positive", "Negative");
string s(4);
// s = str; -à This line gives error as the whole array cannot be copied at a single go
// It can be copied as shown below
for( int i=0; i<4; i++) (
s(i) = str(i);
)
for(int i=0; i<4; i++) (
cout << "The element " << i+1 << " of copied array = " << s(i) << " is same as
the corresponding element in main array which is " << str(i) << endl;
)
)

Saída de erro:

Resultado:

Aqui, quando tentamos copiar toda a matriz principal de strings (str) para outra (s) matriz (s) de strings, recebemos um erro (como mostrado na captura de tela1), enquanto que quando copiámos elemento por elemento, str foi copiado para s e pudemos verificar isso vendo a segunda captura de tela de saída.

Conclusão

Portanto, a string é um tipo de dados que é uma matriz de caracteres e está presente apenas em C ++. Em C, costumávamos declarar como uma matriz de caracteres. A matriz de seqüências de caracteres é uma matriz composta de várias seqüências de caracteres. Quando declarado estaticamente ou dinamicamente, é de tamanho fixo e quando declarado na forma de um vetor, o tamanho não é fixo. Cada elemento e o caractere em um elemento específico podem ser facilmente acessados ​​usando a indexação da matriz de strings.

Artigos recomendados

Este é um guia para a matriz de seqüências de caracteres em C ++. Aqui discutimos como excesso de elemento em String Array em C ++ e alocação de String Array em C ++. Você também pode consultar nossos outros artigos relacionados para saber mais.

  1. Matriz de seqüência de caracteres em Python
  2. StringBuffer em Java
  3. Funções de String Python
  4. Matrizes em C ++
  5. Introdução à matriz de seqüências de caracteres em c #
  6. Os 11 principais recursos e vantagens do C ++
  7. Top 8 Comparações de String vs StringBuilder
  8. Matriz Trabalhar no Unix com sintaxe?