Lol, olvidate de esa aberración vangodp *_*.
C_str() es un puntero solo para LECTURA. Si intentas escribir en él la vas a liar parda, te puede funcionar de "chiripa" para 3-4 caracteres. Prueba a meterle 10-15 a ver que pasa.
En todo caso sería:
#include <iostream>
using namespace std;
int main ()
{
string frase;
cout << "Escriba algo :)";
getline(cin,frase);
cout << frase << " bien y tu";
cin.ignore();
return 0;
}
Y aún así tampoco es lo que pide el usuario. Para hacerlo tendrías que usar una librería externa (como ncurses o la de conio.h). Si usas la de conio te interesa la función getch()
#include <iostream>
#include<conio.h>
using namespace std;
string LeerPalabra()
{
string palabra;
int ch;
while ((ch = getch()) != ' ' && ch != '\n' && ch != EOF)
{
cout<<(char)ch;
palabra += ch;
}
cout<<(char)ch;
return palabra;
}
int main ()
{
string frase;
cout << "Escriba algo :)";
frase = LeerPalabra();
cout <<" bien y tu";
cin.ignore();
return 0;
}
Eso si hará lo que quieres, leera hasta que encuentre un espacio y devolverá la palabra leída.
Puedes hacer incluso que no muestre lo que vas escribiendo (comentando los couts que he puesto en la función).