Nhà xây dựng filebuf
mà các cờ này được chuyển qua & dagger; có hành vi dựa trên những lá cờ được quy định tại Bảng 132 trong C++ 11:
+-----------------------------------+-------------------+
| 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" |
+-----------------------------------+-------------------+
Như bạn có thể thấy, sự kết hợp lá cờ của bạn là không tìm thấy trong bảng đó.
[C++11: 27.9.1.4/2]:
[..] Nếu mode
không phải là một sự kết hợp của lá cờ thể hiện trong bảng sau đó mở thất bại.
Đó là ngữ nghĩa.
& dagger;[C++11: 27.9.1.7/2]
& [C++11: 27.9.1.11/2]
cho chúng ta thấy rằng chế độ được truyền từ đối tượng luồng tới đối tượng bộ đệm.
Nguồn
2013-02-26 08:49:03
http://en.cppreference.com/w/cpp/io/ios_base/openmode – Zeta
Tài liệu không nói rằng 'ios :: app' không thể kết hợp với' ios :: trunc'. – xmllmx
Bạn đang cố gắng làm gì? std :: ios :: trunc cơ bản loại bỏ mọi thứ trong khi std :: ios :: app appends. – CLearner