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<<"'";
}