Converti array di caratteri in stringa in C++

Jinku Hu 12 ottobre 2023
  1. Usa il costruttore std::string per convertire un array di caratteri in una stringa
  2. Usa la funzione memmove per convertire un array di caratteri in una stringa
  3. Usa il metodo std::basic_string::assign per convertire un array di caratteri in una stringa
Converti array di caratteri in stringa in C++

Questo articolo introduce diversi metodi per convertire un array char in un contenitore string.

Usa il costruttore std::string per convertire un array di caratteri in una stringa

In questo esempio, dichiariamo una stringa C costante, che viene quindi utilizzata come parametro di costruzione string. Questo metodo calcola automaticamente la lunghezza della stringa. Dopo la chiamata al costruttore, possiamo manipolare la variabile tmp_string secondo necessità.

#include <iostream>
#include <string>

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

int main() {
  const char* c_string = "This will be stored in std::string";

  string tmp_string(c_string);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

Produzione:

This will be stored in std::string

Usa la funzione memmove per convertire un array di caratteri in una stringa

Un modo più semplice è copiare i dati char* in un contenitore di stringa inizializzato. In questo modo, devi conoscere in anticipo la lunghezza dell’array char per passarla nella funzione memmove. Notare che l’inizializzazione del contenitore string è fondamentale per un comportamento corretto, ed è per questo che stiamo riempiendo la variabile tmp_string con 0x01 byte.

#include <cstring>
#include <iostream>
#include <string>

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

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string(C_STRING_LENGTH, 1);

  memmove(&tmp_string[0], c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

Nota che puoi anche copiare i dati di c_string in tmp_string utilizzando varie funzioni come: memcpy, memccpy, mempcpy, strcpy o strncpy, ma fai attenzione a leggere attentamente le pagine di manuale e considerare i loro casi limite / bug.

Usa il metodo std::basic_string::assign per convertire un array di caratteri in una stringa

Come nell’esempio precedente, questo metodo richiede la lunghezza dell’array char. Definiamo un puntatore char chiamato tmp_ptr e gli assegniamo l’indirizzo del primo carattere in tmp_string.

#include <iostream>
#include <string>

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

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string;

  tmp_string.assign(c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}
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++ Char

Articolo correlato - C++ String