C++ Conversione in (const) char *


Esempio

Per ottenere un accesso const char* ai dati di una std::string puoi utilizzare la funzione membro c_str() della stringa. Tieni presente che il puntatore è valido solo finché l'oggetto std::string è all'interno dell'ambito e rimane invariato, il che significa che solo i metodi const possono essere richiamati sull'oggetto.

C ++ 17

La funzione membro data() può essere utilizzata per ottenere un char* modificabile, che può essere utilizzato per manipolare i dati dell'oggetto std::string .

C ++ 11

Un char* modificabile char* può anche essere ottenuto prendendo l'indirizzo del primo carattere: &s[0] . All'interno di C ++ 11, questo è garantito per produrre una stringa ben formata, con terminazione nulla. Nota che &s[0] è ben formato anche se s è vuoto, mentre &s.front() non è definito se s è vuoto.

C ++ 11
std::string str("This is a string.");
const char* cstr = str.c_str(); // cstr points to: "This is a string.\0"
const char* data = str.data();  // data points to: "This is a string.\0"
std::string str("This is a string.");

// Copy the contents of str to untie lifetime from the std::string object
std::unique_ptr<char []> cstr = std::make_unique<char[]>(str.size() + 1);

// Alternative to the line above (no exception safety):
// char* cstr_unsafe = new char[str.size() + 1];

std::copy(str.data(), str.data() + str.size(), cstr);
cstr[str.size()] = '\0'; // A null-terminator needs to be added

// delete[] cstr_unsafe;
std::cout << cstr.get();