Hola, te explico, la función end de std::string, retorna un
iterador ( en la librería estándar se usan iteradores para poder recorrer contenedores, es como un puntero a una posición en un contenedor ) al próximo elemento después del último caracter en la cadena, es decir, al final ... (lo opuesto a begin, que retorna el principio de la cadena)
En en caso de erase, como bien su nombre dice, borra un caracter de la cadena, y la posición donde se borra está dada por el iterador (se borra el último caracter) ... y después se le concatena otra cadena usando el operador +
Las funciones en C que te ayudarían sería
strlen() y
strcat() en principio, pero como el manejo de memoria no está abstraído en clases como string, vas a tener que hacerlo a mano con
malloc(),
realloc()* y
free()Acordate que por cada vez que pidas memoria con funciones tipo malloc/realloc y calloc, tenés que liberarla sí o sí con free, sino vas a tener una
fuga de memoria en el programa ...
Deberías leer de punteros y manejo de memoria antes ... no es algo que tome mucho leer, te cedo el link de conclase, pero quizá alguien conozca algo mejor ->
http://c.conclase.net/curso/index.php?cap=012#inicio (es un curso de C++, pero sirve)
Y ya que vas a lidiar con memoria y funciones como strcat(), te dejo >
este link < de lo que no hay que hacer, es decir, errores comunes en la gente que recién arranca a programar
Saludos y suerte !
P.S : Tiene pinta de ser un código un tanto guarro ...
* : No necesariamente, pero acordate de pedir siempre lo que uses, no desperdicies memoria ... después siempre podés pedir más !