Non è possibile ottenere un char*
da un string
string
non ti permettere l'accesso gratuito al suo buffer interno. Il più vicino possibile è uno const char*
utilizzando .c_str()
se lo si desidera terminato con null o .data()
se non deve essere terminato con null.
è quindi possibile lanciare il puntatore restituito da queste funzioni per char*
ma farlo a proprio rischio. Detto questo, si tratta di un cast relativamente sicuro da fare fintanto che ci si assicura che non si stia cambiando la stringa. Se lo hai cambiato, il puntatore che hai ottenuto da c_str()
potrebbe non essere più valido.
Questo codice:
string str("Hello World!");
char* sp = (char*)str.c_str();
sp[5] = 'K';
è probabilmente ok
Tuttavia questo:
string str("Hello World!");
char* sp = (char*)str.c_str();
str = "Chaged string";
sp[5] = 'K';
è sicuramente non ok.
@unicornaddict: grazie. ora come faccio a trovare le altre occorrenze di quel personaggio nella stringa? [la lunghezza della stringa è enorme, quindi creare una stringa completamente nuova non è un'opzione] – Moeb
@cambr: esiste una ** versione ** sovraccaricata di 'find_first_of' che accetta la ** posizione per avviare la ricerca da ** come argomento. Ho pubblicato un esempio qui: http://www.ideone.com/bESwL – codaddict