ofstream seltsames Verhalten

Ich bin auf ein merkwürdiges Verhalten des Ofstream gestoßen, das für mich am wenigsten merkwürdig ist. Hier ist mein Programm, ich benutze 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;
}

Dies erzeugt die richtige Ausgabe.

etwas1etwas2

Wenn ich nun die 9. Zeile durch den folgenden Code ersetze,

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

Ich bekomme diese Ausgabe.

etwas2

Aber wenn ich die 9. Zeile wieder ersetze, diesmal mit diesem Code,

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

Ich bekomme diese Ausgabe.

etwas1etwas2

Nun, ich denke die Frage ist, könnte mir jemand helfen, irgendeinen Sinn daraus zu machen? Warum funktioniert die letzte Lösung, die mittlere nicht?

BEARBEITEN: Die Hauptfunktion wurde korrigiert. Sie lernen jeden Tag etwas.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage