http://www.cplusplus.com/reference/string/string/c_str
la classe string contine una stringa e lo manipola lei internamente (per adesso non ti interessa come è fatta.)
string.c_str() in teoria fa così:
char temp[string.length()]; //crea un array di caratteri di lunghezza x dove x è la lunghezza della stringa.
copia tutti i caratteri presenti nella stringa nell'array temp.
return temp;
cosi tu se hai la stringa "pippo" questa ti ritorna l'array temp definto come
char temp[] = "pippo";
insomma è un ritorno da C++ a C.