2012-06-18 20 views
42

Trong trường hợp ifstream trong C++, trong điều kiện nào là các cờ failbitbadbit được đặt?C++ ifstream failbit và badbit

+5

http://cplusplus.com/reference/iostream/ios/fail/ – BoBTFish

+4

@Jake Bạn đọc tài liệu? –

Trả lời

49

Theo cplusplus.com:

failbit thường được thiết lập bởi một hoạt động đầu vào khi lỗi có liên quan đến logic nội tại của các hoạt động riêng của mình, vì vậy các hoạt động khác trên dòng có thể thực hiện được. Trong khi badbit thường được thiết lập khi các lỗi liên quan đến việc mất tính toàn vẹn của con suối, đó là khả năng tồn tại ngay cả khi một hoạt động khác nhau được thực hiện trên suối. badbit có thể được kiểm tra độc lập bằng cách gọi hàm thành viên xấu.

Trong từ đơn giản, nếu bạn nhận được một số khi mong đợi để lấy thư , nó failbit. Nếu một nghiêm trọng lỗi xảy ra, mà phá vỡ khả năng đọc từ dòng ở tất cả - đó là một badbit.

Trừ cờ nêu trên có một phần ba khá giống - eofbit. Bạn có thể kiểm tra trạng thái bằng một số chức năng: ios::fail, ios::goodios::bad

Và bạn cũng có thể làm quen với iostream library tại tài nguyên MSDN.

Cuối cùng, nếu bạn tìm kiếm các giải pháp đúng làm thế nào để xử lý tất cả các bit lỗi và ngoại lệ khi đọc từ tập tin (hoặc truy cập vào một số tập tin hoặc thư mục), tôi khuyên bạn nên bạn đọc một rất toàn diện và tốt Điều -written "Reading files in C++ using ifstream: dealing correctly with badbit, failbit, eofbit, and perror()", cuối cùng trong đó bạn sẽ tìm thấy một vài Ideal solutions. Bài viết rất đáng đọc.

+12

Cảm ơn bạn đã đề cập đến bài viết của mình :-). –

+0

@ Jan-PhilipGehrcke Tôi không thể mở các liên kết ở trên. – Orient

+0

Có, thật không may. Vui lòng sử dụng bộ nhớ cache của Google để thay thế. – gahcep