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).