pon cin.sync(); después de leer cin>>c; antes de la segunda lectura.
Eso pasa por que al pulsar enter, el mismo enter en si es un carácter, pero no un carácter normal, si no que el que se ocupa del salto de linea.
Como esperas 2 cosas que son un char y un string ahi los tienes. Cuando tecleas 'A' y pulsas '\n' tienes 2 por el precio de 1. XDDD
Lo que pasa es que 'A' se mete en el char y '\n' se mete en el string¡vualá! tu programa echo misto. XDD
Así de perra es la vida pero bueno....
El carácter enter es un carácter no imprimible pero hay signos de que está ahí. Por ejemplo se ve que imprimes primero el string y después el char, pero si haces el inverso verás sin razón aparente que hay un salto de linea entre ambos.
lo mismo pasa si intentas leer 2 chars. El primer recibe el char y el segundo recibe el enter.
Te lo voy a demostrar XDDD
//compile eso
Código C++:
Ver originalchar c1;
char c2;
cout << "Imprima el char 1:";
cin>>c1;
cout << "Imprima el char 2:";
cin>>c2;
cout << c1 << endl;
cout << int (c2) << endl; //aquí veras un numero que corresponde al carácter '\n' que en valor decimal según la tabla asc2 es 10 creo XDD.
...Puede buscar aquí:
http://www.elcodigoascii.com.ar/
El 10 es nueva linea, no se imprime solo salta de linea, como ves es un char. =(
cin.sync() sincroniza correctamente lo escrito con el string. Llámalo siempre antes de leer chars y strings ;)
Busque como limpiar el buffer en C++ ya te dará el dolor de cabeza de los novatos. El mismo que tuve yo vamos. XD