Veamos algunos métodos que nos provee la clase string para modificar el contenido de un string:
Inicializar un string con una cadena de caracteres y aplicar los métodos: append, insert y erese. Mostrar el estado final del string después de llamar a cada método.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string cad = "uno tres";
cout << "Cadena original:" << cad << "\n";
cad.append(" cuatro");
cout << "Cadena despues de llamar a append:" << cad << "\n";
cad.insert(3, " dos");
cout << "Cadena despues de llamar a insert:" << cad << "\n";
cad.erase(0, 4);
cout << "Cadena despues de llamar a erase:" << cad << "\n";
return 0;
}

Este proyecto lo puede descargar en un zip desde este enlace : Clasestring9.zip
Agregamos una cadena al final del string llamando al método append y pasando como parámetro la cadena a agregar (podemos pasar como parámetro otra variable de tipo string):
cad.append(" cuatro");
Insertamos a partir de la posición tercera otra cadena:
cad.insert(3, " dos");
Eliminamos a partir de la posición cero cuatro caracteres del string en el estado actual:
cad.erase(0, 4);
#include<string>
#include<iostream>
using namespace std;
int main()
{
string cadena;
cout << "Ingrese una palabra:";
getline(cin, cadena);
int posi=1;
int cantidad = cadena.length();
for (int f = 1; f <= cantidad-1; f++) {
cadena.insert(posi, "-");
posi = posi + 2;
}
cout << "Estado cadena final:" << cadena;
return 0;
}
Este proyecto lo puede descargar en un zip desde este enlace :Clasestring10
#include<string>
#include<iostream>
using namespace std;
int main()
{
string cadena;
cout << "Ingrese una oracion:";
getline(cin, cadena);
int largo = cadena.length();
for (int f = 0; f < largo; f++)
{
if (cadena[f] == ' ')
{
cadena.erase(f, 1);
largo--;
}
}
cout << "Oracion sin espacios:"<<cadena;
return 0;
}
Este proyecto lo puede descargar en un zip desde este enlace :Clasestring11