std::string::c_str()
obtiene un puntero const char*
a una matriz de caracteres que representa la cadena (terminada en nulo).
No debe manipular los datos a los que apunta este puntero, de modo que si necesita hacerlo, copie los datos.
doble edición - haciéndolo de una manera más C++ moda
Dado que es más agradable para evitar el uso de punteros primas y las matrices siempre que sea posible, también se pueden obtener los datos en una std::vector<char>
#include <string>
#include <vector>
int main()
{
std::string str = "Hello";
std::vector<char> cvec(str.begin(), str.end());
// do stuff
}
editar esto es más como C, ya que utiliza punteros primas y explícitamente asigna mem
#include <string>
#include <cstring>
int main()
{
std::string str = "Hello";
char *cptr = new char[str.size()+1]; // +1 to account for \0 byte
std::strncpy(cptr, str.c_str(), str.size());
// do stuff...
delete [] cptr;
}
¿Por qué quieres hacer esto? – GManNickG
@GMan: hay muchas razones, la principal es invocar funciones en una API de C? –
@Gman Porque necesito pasar la variable foobar a la función inet_pton de UDT que solo toma las variables de tipo char *. –