c_str() restituisce un const char * perché la stringa C restituita punta ad un buffer interno di sola lettura, ma i parametri della tua funzione sono dichiarati (inutilmente) come char * invece che come const char *.
Dovresti abituarti a specificare sempre const nei parametri puntatori e reference delle funzioni quando queste non hanno ragione di modificarli: questo ti consente di rendere più chiaro quali parametri sono di input e quali di output e di usare comodamente puntatori costanti ottenuti da altre funzioni.