странное странное поведение

Я столкнулся со странным поведением ofstream, наименее странным для меня. Вот моя программа, я использую Visual Studio 2010 Express Edition.

int main () {

    std::ofstream file("file.txt");
    file << "something1";
    file.close();

    file.open("file.txt", std::ios::ate | std::ios::in );
    file << "something2";
    file.close();

    return 0;
}

Это производит правильный вывод.

something1something2

Теперь, если я заменю 9-ю строку следующим кодом,

file.open("file.txt", std::ios::ate);

я получаю этот вывод.

something2

Но если я снова заменю 9-ю строку, на этот раз этим кодом,

file.open("file.txt", std::ios::ate | std::ios::in );

я получаю этот вывод.

something1something2

Теперь, я думаю, вопрос в том, может ли кто-нибудь помочь мне разобраться в этом? Почему последнее решение работает, а среднее - нет.

EDIT: Исправлена основная функция. Вы чему-то учитесь каждый день.

Ответы на вопрос(1)

Ваш ответ на вопрос