Que tal RoDaVi, lo que pudiera comentarte es que al trabajar con Strings las funciones que emplees te aseguran la inserción de los nulos al final de la cadena. Algo que si veo cuando cortas la cadena
Código:
nombre.erase (30,cantidad);
es que en la variable cantidad contiene la longitud total de la cadena y tu solo quieres cortar la diferencia, esto es,
Código:
nombre.erase (30,cantidad-30);
Con esto, puedes evitar que se desborde algun segmento de memoria cuando el sistema corte el exceso...
Algo que no entendí es a que te refieres con las 3 llamadas???