No se puede obtener una char*
de un string
string
no le permitirá el acceso gratuito a su buffer interno. Lo más cercano que puede obtener es const char*
usando .c_str()
si lo quiere nulo terminado o .data()
si no tiene que ser terminado nulo.
A continuación, puede convertir el puntero devuelto por estas funciones a char*
, pero lo hace bajo su responsabilidad. Dicho esto, este es un lanzamiento relativamente seguro, siempre y cuando te asegures de no estar cambiando la cuerda. Si lo cambió, el puntero que obtuvo de c_str()
puede que ya no sea válido.
este código:
string str("Hello World!");
char* sp = (char*)str.c_str();
sp[5] = 'K';
es probablemente correcto
Sin embargo esto:
string str("Hello World!");
char* sp = (char*)str.c_str();
str = "Chaged string";
sp[5] = 'K';
definitivamente no es aceptable.
@unicornaddict: gracias. ahora, ¿cómo puedo encontrar las otras apariciones de ese personaje en la cadena? [la longitud de la cadena es enorme, por lo que crear una nueva cadena no es una opción] – Moeb
@cambr: Hay una versión ** sobrecargada ** de 'find_first_of' que acepta la posición ** para iniciar la búsqueda ** como un argumento He publicado un ejemplo aquí: http://www.ideone.com/bESwL – codaddict