Tôi muốn đọc từ luồng bằng cách sử dụng std::getline
bên trong vòng lặp for.đọc an toàn từ luồng trong vòng lặp for bằng cách sử dụng getline
Luồng tôi ngụ ý là một lớp được kế thừa từ std::basic_iostream
.
std::string line; for(;;){ try{ std::getline(myStreamObj, line); if(line != ""){ std::cout << line << std::endl; } } catch(std::ios_base::failure& ex){ std::cout << ex.what() << std::endl; } }
Tôi cũng muốn kiểm tra chống lại điều kiện lỗi khác như
eofbit failbit badbit
Nhưng tôi chút nhầm lẫn về điều đó.
Nếu một số điều kiện cài đặt 3 cờ này được đáp ứng thì có bất kỳ ngoại lệ nào được ném như std::ios_base::failure
không? Làm thế nào để handlse những 3 trường hợp? Tôi có phải kiểm tra các cách khác không?
Cảm ơn AFG
Cảm ơn bạn đã trả lời! Tôi không biết về tình trạng này để nó có ích. Tôi có thể hỏi bạn một chi tiết nhỏ hơn không. Tại sao ngoại lệ không phải là lựa chọn tốt ở đây? –
@Abruzzo Rất nhiều lý do - chậm hơn, không dễ dàng hỗ trợ nối lại, cần viết thêm mã để xử lý lỗi. Và hầu hết mọi người đọc mã của bạn sẽ mong đợi ngoại lệ * không * được sử dụng trong khu vực này, vì vậy họ sẽ tìm thấy mã khó hiểu hơn. –