Crea un array di stringhe in C++

Jinku Hu 12 ottobre 2023
  1. Usa il contenitore std::vector per creare un array di stringhe in C++
  2. Usa il contenitore std::array per creare un array di stringhe in C++
  3. Usa la notazione string arr[] per creare un array di stringhe in C++
  4. Usa la notazione char arr[][] per creare un array di stringhe in C++
Crea un array di stringhe in C++

Questo tutorial spiegherà diversi metodi su come creare un array di stringhe in C++.

Usa il contenitore std::vector per creare un array di stringhe in C++

Il contenitore std::vector dell’STL fornisce un array dinamico per oggetti dati generici che possono essere utilizzati per creare un array di stringhe. Gli elementi in std::vector sono memorizzati in modo contiguo; pertanto, è possibile accedervi in ​​modo efficiente senza spese generali.

D’altra parte, std::vector di solito occupa più spazio di archiviazione rispetto a diversi tipi di array statici perché il primo richiede di allocare spazio extra per l’efficienza della gestione della memoria. Inoltre, std::vector fornisce utili funzioni membro per la manipolazione di elementi come la costruzione di elementi sul posto con la funzione emplace_back, come illustrato nell’esempio seguente.

#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;
}

Produzione:

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

Usa il contenitore std::array per creare un array di stringhe in C++

In alternativa, si può usare il contenitore std::array per dichiarare un array statico. Questi array sono simili agli array in stile C in termini di efficienza del footprint di memoria e forniscono le funzioni membro comuni per l’accessibilità. Il contenitore std::array utilizza l’inizializzazione aggregata. Può anche essere iterato utilizzando le funzioni iteratrici comuni e manipolato utilizzando l’algoritmo std::copy, come mostrato nel seguente esempio di codice.

#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;
}

Produzione:

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

Usa la notazione string arr[] per creare un array di stringhe in C++

Un altro metodo utile per creare un array di stringhe è l’array in stile C di oggetti string; questo dichiarerebbe un array di stringhe a elementi fissi a cui è possibile accedere in modo casuale con la notazione dell’indice e iterato con un cicli for basato sull’intervallo. Ricorda che dovresti implementare funzioni personalizzate per la manipolazione degli elementi e l’accessibilità come incluso nella 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;
}

Produzione:

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

Usa la notazione char arr[][] per creare un array di stringhe in C++

Puoi anche allocare un array di stringhe che ha una lunghezza fissa, con ogni stringa che ha il numero massimo di caratteri predefinito. Nota che questo metodo dichiara essenzialmente un array char bidimensionale che memorizzerà ogni stringa in una singola riga della matrice. Se la lista dell’inizializzatore include la stringa con più caratteri rispetto alla seconda dimensione dell’array, l’ultima parte della stringa verrà ritagliata per adattarsi alla riga.

#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;
}

Produzione:

Sunny Cove;
Willow Cove;
Golden Cove;
Ocean Cove;
Autore: 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

Articolo correlato - C++ Array