HOWTO · C++
Converti array di caratteri in stringa in C++
Questo articolo introduce diversi modi per convertire un array di caratteri in una stringa in C++
In questa pagina
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;
}