Crie um array de strings em C++

Jinku Hu 12 outubro 2023
  1. Use o container std::vector para criar um array de strings em C++
  2. Use o contêiner std::array para criar um array de strings em C++
  3. Use a notação string arr[] para criar um array de strings em C++
  4. Use a notação char arr[][] para criar um array de strings em C++
Crie um array de strings em C++

Este tutorial explicará vários métodos de como criar um array de strings em C++.

Use o container std::vector para criar um array de strings em C++

O contêiner std::vector do STL fornece um array dinâmico para objetos de dados genéricos que podem ser utilizados para criar um array de strings. Os elementos em std::vector são armazenados contiguamente; portanto, eles podem ser acessados ​​de forma eficiente sem sobrecarga.

Por outro lado, std::vector normalmente ocupa mais armazenamento do que diferentes tipos de arrays estáticos porque o primeiro requer a alocação de espaço extra para eficiência de gerenciamento de memória. Além disso, std::vector fornece funções de membro úteis para manipulação de elementos, como a construção de elementos no local com a função emplace_back, conforme demonstrado no exemplo a seguir.

#include <iostream>
#include <string>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVector(std::vector<T> v) {
  for (const auto &item : v) {
    cout << item << "; ";
  }
  cout << endl;
}

int main() {
  vector<string> str_arr1 = {"Sunny Cove", "Willow Cove", "Golden Cove",
                             "Ocean Cove"};

  printVector(str_arr1);
  str_arr1.emplace_back("Palm Cove");
  printVector(str_arr1);

  return EXIT_SUCCESS;
}

Resultado:

Sunny Cove;
Willow Cove;
Golden Cove;
Ocean Cove;
Sunny Cove;
Willow Cove;
Golden Cove;
Ocean Cove;
Palm Cove;

Use o contêiner std::array para criar um array de strings em C++

Alternativamente, pode-se usar o contêiner std::array para declarar um array estático. Essas matrizes são semelhantes às matrizes de estilo C em termos de eficiência da área de cobertura da memória e fornecem as funções de membro comuns para acessibilidade. O contêiner std::array usa inicialização agregada. Ele também pode ser iterado usando as funções iteradoras comuns e manipulado usando o algoritmo std::copy, conforme mostrado no exemplo de código a seguir.

#include <array>
#include <iostream>
#include <iterator>
#include <string>

using std::array;
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::string;

int main() {
  array<string, 4> str_arr2 = {"Sunny Cove", "Willow Cove", "Golden Cove",
                               "Ocean Cove"};
  array str_arr3 = {"Sunny Cove", "Willow Cove", "Golden Cove", "Ocean Cove"};

  std::copy(str_arr3.begin(), str_arr3.end(),
            std::ostream_iterator<string>(cout, "; "));
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

Sunny Cove;
Willow Cove;
Golden Cove;
Ocean Cove;

Use a notação string arr[] para criar um array de strings em C++

Outro método útil para criar um array de strings é o array estilo C de objetos string; isso declararia um array de string de elemento fixo que pode ser acessada aleatoriamente com notação de índice e iterada com um loop for baseado em intervalo. Lembre-se de que você precisaria implementar funções personalizadas para manipulação de elementos e acessibilidade, conforme incluído na classe std::array.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str_arr4[4] = {"Sunny Cove", "Willow Cove", "Golden Cove",
                        "Ocean Cove"};

  for (auto &i : str_arr4) {
    cout << i << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

Sunny Cove;
Willow Cove;
Golden Cove;
Ocean Cove;

Use a notação char arr[][] para criar um array de strings em C++

Você também pode alocar um array de string de comprimento fixo, com cada string tendo o número máximo de caracteres predefinidos. Observe que este método declara essencialmente um array char bidimensional que armazenará cada string em uma única linha do array. Se a lista do inicializador incluir a string com mais caracteres do que a segunda dimensão do array, a última parte da string será cortada para caber na linha.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  char str_arr5[4][20] = {"Sunny Cove", "Willow Cove", "Golden Cove",
                          "Ocean Cove"};
  for (auto &i : str_arr5) {
    cout << i << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

Sunny Cove;
Willow Cove;
Golden Cove;
Ocean Cove;
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ Array