2012-10-15 10 views
7

thể trùng lặp:
do I need to close a std::fstream?Tự động đóng các tệp của nó?

int main() { 
    ofstream a("a.txt"); 
    a << "A" << endl; 
    //a.close(); 
} 

này hoạt động tốt, nhưng không phải là nó cần thiết để đóng tập tin ở phần cuối của chương trình?

+0

xem câu hỏi này http://stackoverflow.com/questions/4802494/do-i-need-to-close-a-stdfstream (và thậm chí đó là một bản sao) – Dirk

+0

@Dirk Tôi chỉ tìm kiếm luồng không ifstream , Tôi sẽ tìm kiếm rộng rãi trong lần tới. Đóng câu hỏi của tôi nếu bạn muốn. – truongnam1996

Trả lời

16

ofstream sẽ đóng các tệp khi hàm hủy của nó được gọi, tức là khi nó nằm ngoài phạm vi. Tuy nhiên, gọi số close() chắc chắn không gây hại và thể hiện ý định của bạn đối với người lập trình bảo trì.

Calling close() cũng cho phép bạn kiểm tra nếu giá đóng cửa() đã thành công vì bạn có thể sau đó cũng kiểm tra failbit:

http://www.cplusplus.com/reference/iostream/ofstream/close/

4

Nó là cần thiết để gọi gần nếu bạn muốn kiểm tra kết quả (thành công hay thất bại).

Nếu không, trình hủy của luồng sẽ cố gắng đóng tệp cho bạn.