Salve ragazzi ho un problemino con questo codice..

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>>h;
    cout<<x<<y<<endl;
    cout<<h;
}
L'output è solo 10120; cioè ha messo uno zero in più e ha mangiato la stringa "fine prova". Come mai?