01/10/2018, 11:58
Hỏi cách đọc file trong C++
Chào mọi người, mình có 1 file .txt như này:
#OBJECT_NUM 4
#ID 0
TYPE: BOX
POSITION: 100, 70, 100, 100
#ID 1
TYPE: CIRCLE
POSITION: 120, 300, 503
#ID 2
TYPE: BOX
POSITION: 400, 400, 150, 100
#ID 3
TYPE: BOX
POSITION: 400, 400, 100, 150
Bây giờ mình muốn đọc file này theo kiểu, nếu TYPE = BOX thì đọc POSITION của BOX, TYPE = CIRCLE thì đọc POSITION của CIRCLE và lấy ra 4 giá trị, ngoài ra không đọc những cái khác, còn check cả trường hợp có 2 hoặc nhiều CIRCLE hoặc nhiều BOX nữa, mong mọi người gợi ý giúp với
Bài liên quan
Hình như làm được bằng hàm fseek mà phức tạp lắm Nhưng mà để đơn giản hơn thì bạn chỉ cần lưu file lại như vậy thử xem. mỗi đối tượng có 2 dòng : dòng 1 thì mình có ID với TYPE, dòng 2 là POSITION của nó.
Bây giờ bạn cứ phải đọc lại đến eof luôn cứ mỗi dòng read vào thì check xem là ID với TYPE nó đúng chưa đúng rồi đọc tiếp một dòng tiếp theo là được, rồi break ra.
Nhưng mà đề yêu cầu đọc y nguyên như kia với lại phải có OBJECT_NUM 4 mới có điều kiện để kết thúc số lần đọc bạn ơi
Mình có ý tưởng là đọc dòng đầu tiên để lấy ra OBJECT_NUM rồi tiếp theo cho vòng lặp lặp từ 1 đến OBJECT_NUM để đọc các giá trị còn lại mà không biết triển khai như nào
Tạo 1 vector của struct object, struct gồm id, type, và vector pos. Đọc đến type thì check rồi for tiếp để emplace_back vào vector pos
Đi tàu rảnh quá không biết làm gì nên code luôn, bạn có thể tham khảo
[spoiler]https://wandbox.org/permlink/LR7CwWp05WpgYZlL[/spoiler]
Cảm ơn bạn nhiều, nhưng mình thấy cách của bạn vẫn hơi hơi khó hiểu, liệu có thể chỉ dùng hàm fscanf mà đọc được hết không bạn
Bạn cần xác định lại là code C hay C++
File có cấu trúc thì cần phải đọc theo cấu trúc
Rút gọn chương trình và chú thích rõ ràng, nếu là program lớn bạn có thể chia function/class