Fai attenzione agli spazi, se in scrittura non separi i due valori interi, in fase di lettura verranno letti come un unico valore intero.
Per quanto riguarda la lettura della stringa contenente spazi, devi usare la funzione getline()
codice:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ofstream out("ciao.txt");
out<<10<<" "<<12<<endl;
out<<"fine prova";
out.close();
ifstream in ("ciao.txt");
if (!in)
return -1;
int x,y;
string h;
in>>x>>y;
cout<<x<<" "<<y<<endl;
in.ignore(256, '\n'); // Ignora il ritorno a capo
getline( in, h);
cout<<"'"<<h<<"'";
}