C++ Conversión a (const) char *


Ejemplo

Para obtener acceso const char* a los datos de un std::string , puede usar la función miembro c_str() del string. Tenga en cuenta que el puntero solo es válido mientras el objeto std::string esté dentro del alcance y permanezca sin cambios, lo que significa que solo se puede llamar a los métodos const en el objeto.

C ++ 17

La función miembro de data() se puede usar para obtener un char* modificable, que se puede usar para manipular los datos del objeto std::string .

C ++ 11

También se puede obtener un char* modificable tomando la dirección del primer carácter: &s[0] . En C ++ 11, se garantiza que esto produce una cadena bien formada, terminada en nulo. Tenga en cuenta que &s[0] está bien formado incluso si s está vacío, mientras que &s.front() no está definido si s está vacío.

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();