Nếu tôi có std::ofstream
có thể có hoặc chưa được mở, có an toàn không để thử close
bất kể? Trong các từ khác làm close()
làm bất cứ điều gì khó chịu (ném ngoại lệ, vv) nếu !is_open()
. Ví dụBạn có thể đóng một tệp an toàn chưa từng được mở một cách an toàn không?
std::ofstream out;
if (some_condition)
{
out.open(path, std::ios::out);
}
Sau khi tôi đang thực hiện với các tập tin, có thể tôi chỉ nói
out.close();
Hoặc tôi nên kiểm tra đầu tiên
if (out.is_open())
out.close();
Mô tả duy nhất của std::basic_fstream::close
trên cppreference là
Đóng assoc tập tin đính kèm.
Gọi hiệu quảrdbuf()->close()
. Nếu xảy ra lỗi trong khi hoạt động, hãy gọisetstate(failbit)
.
Bạn chỉ có thể để đối tượng nằm ngoài phạm vi ... –
Nói chung đó là những gì tôi làm, đó là lý do tại sao tôi thích 'std :: ofstream', nhưng trong trường hợp cụ thể này, tôi muốn tệp bị đóng trước đó hơn là nếu không. – CoryKramer
Nếu bạn nhìn vào cppreference cho ['std :: ofstream :: close'] (http://www.cplusplus.com/reference/fstream/ofstream/close/), bạn sẽ thấy rằng ví dụ cụ thể về việc gọi' close 'trên một tập tin không mở được sử dụng. Tóm lại, không có gì khó chịu xảy ra, nó chỉ thiết lập các failbit vì vậy bất cứ điều gì bạn cố gắng làm với 'ofstream' sau đó có thể gây ra vấn đề. –