Может быть, я что-то упустил, но что не так с:
std::ofstream f("somefile.txt");
for(vector<X>::const_iterator i = v.begin(); i != v.end(); ++i) {
f << *i << '\n';
}
Это позволяет избежать необходимости выполнять потенциально квадратичную конкатенацию строк, что, как я полагаю, является причиной того, что убивает вашу среду выполнения.