std :: ios_base :: ăn đặt con trỏ vào cuối của văn bản trong khi std :: ios_base_app gắn thêm văn bản (với một thao tác ghi) ở cuối, mặc dù bạn vẫn có thể đọc từ đầu :)
std :: ios_base :: trunc cắt ngắn tập tin để nó được làm rỗng, trong khi std :: ios_base :: chỉ cần chỉ định bạn muốn ghi vào luồng.
Tôi hiện không thể báo giá chuẩn (trên máy tính bảng và Acrobat Reader của tôi sẽ không cho phép sao chép) nhưng từ đoạn 27.4.2.1.4 từ ISO 14882: 1998 thông tin bạn có thể thấy trên liên kết gần như chính xác : http://cplusplus.com/reference/iostream/ios_base/openmode/
tóm lại:
std::ios_base::app = append
Nối vào cuối dòng bằng cách "tìm kiếm [ing] để kết thúc trước khi mỗi ghi"
std::ios_base::ate = At The End
mở và tìm kiếm immed iately vào cuối sau khi mở cửa
std::ios_base::binary = binary
Thực hiện thao tác trong hệ nhị phân như trái ngược với văn bản
std::ios_base::in = input
mở trong chế độ đọc
std::ios_base::out = output
mở trong chế độ ghi
std::ios_base::trunc = truncate
Cắt bớt luồng khi mở ing.
Những giá trị này chỉ là lá cờ, vì vậy bạn có thể mở một dòng ở chế độ đọc/ghi nhị phân ở cuối với:
std::ios_base::in | std::ios_base::out | std::ios_base::ate | std::ios_base::binary
Liên quan đến cách sử dụng những giá trị, nó là như bạn muốn. Chúng được khai báo là các trường tĩnh công khai trong lớp std::ios_base
(xem 27.4.2) do đó có thể truy cập chúng bằng cách sử dụng std::ios::ate
hoặc thậm chí là một cái gì đó như cout.binary
!
Những điểm nơi bạn phải chú ý là std::ios_base::ate
KHÔNG bao hàm std::ios_base::app
cũng không std::ios_base::out
ngụ ý std::ios_base::trunc
. Mỗi trường có ý nghĩa khác và một trường hợp sử dụng khác, mặc dù hầu hết chúng không thể sử dụng một mình :)
'std :: ios_base :: in' và' std :: ios :: in' phải là giống hệt, tùy thuộc vào bạn. – oldrinb
@veer có họ là, cũng như bất kỳ :: ios_base :: hậu duệ :: trong :) – Geoffroy