Der filebuf
Konstruktor, an den diese Flags übergeben werden & dagger; hat Verhalten basierend auf den in Tabelle 132 in C++ 11 definierten Fahnen:
+-----------------------------------+-------------------+
| ios_base flag combination | stdio equivalent |
| binary in out trunc app | |
+-----------------------------------+-------------------+
| + | "w" |
| + + | "a" |
| + | "a" |
| + + | "w" |
| + | "r" |
| + + | "r+" |
| + + + | "w+" |
| + + + | "a+" |
| + + | "a+" |
+-----------------------------------+-------------------+
| + + | "wb" |
| + + + | "ab" |
| + + | "ab" |
| + + + | "wb" |
| + + | "rb" |
| + + + | "r+b" |
| + + + + | "w+b" |
| + + + + | "a+b" |
| + + + | "a+b" |
+-----------------------------------+-------------------+
Wie Sie sehen können, Ihre Flagge Kombination ist nicht in dieser Tabelle gefunden.
[C++11: 27.9.1.4/2]:
[..] Wenn mode
nicht irgendeine Kombination von Flaggen in der Tabelle angegeben ist dann die offene ausfällt.
Das sind die Semantik.
& dolch;[C++11: 27.9.1.7/2]
& [C++11: 27.9.1.11/2]
zeigen Sie uns, dass der Modus vom Stream-Objekt an das Pufferobjekt übergeben wird.
http://en.cppreference.com/w/cpp/io/ios_base/openmode – Zeta
Die Dokumentation sagt nicht, dass "ios :: app" nicht mit "ios :: trunc" kombiniert werden kann. – xmllmx
Was versuchst du zu tun? std :: ios :: trunc löscht im Prinzip alles, während std :: ios :: app anfügt. – CLearner