Hola NicomeL1 prueba esto:
Código:
string cadena = nombre;
char arreglo[] = cadena.toCharArray();
arrelgo[0] = (char)toupper(arreglo[0]);
cadena = arreglo[]; //No recuerdo si esto se puede hacer directamente en c++
En teoría eso debería funcionar, creo que lo podrías optimizar haciendo una función que reciba tu string y devuelva el string ya formateado.
Saludos!