dziwnego zachowania

Zetknąłem się z dziwnym zachowaniem strumienia, najmniej dla mnie dziwnym. Oto mój program, korzystam z 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;
}

Daje to prawidłowe wyjście.

coś1 coś2

Teraz, jeśli zastąpię dziewiąty wiersz następującym kodem,

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

dostaję to wyjście.

coś2

Ale jeśli zastąpię dziewiąty wiersz, tym razem tym kodem,

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

dostaję to wyjście.

coś1 coś2

Myślę, że pytanie brzmi: czy ktoś mógłby mi pomóc to zrozumieć? Dlaczego ostatnie rozwiązanie działa, ale środkowe nie.

EDYTOWAĆ: Poprawiono główną funkcję. Każdego dnia uczysz się czegoś.

questionAnswers(1)

yourAnswerToTheQuestion