Cách tạo trò chơi lưu định dạng tệp trong c ++ bằng STL


7

Hey vì vậy tôi chỉ tìm hiểu về phần i / o của STL, cụ thể hơn là fux. Mặc dù bây giờ tôi có thể lưu thông tin nhị phân và các lớp tôi đã tạo vào ổ cứng, tôi không chắc cách xác định cách đọc thông tin.

Tôi đã thấy câu trả lời cho việc tạo định dạng tệp từ bài đăng [này] [1]:

Thông thường, bạn sẽ xác định rất nhiều bản ghi / cấu trúc, chẳng hạn như BITMAPINFOHEADER, và chỉ định theo thứ tự chúng sẽ đến, cách chúng được lồng vào nhau và bạn có thể cần phải viết rất nhiều bảng chỉ dẫn và bảng tra cứu. Các tệp này bao gồm một số bản ghi (có thể được lồng vào nhau), bảng tra cứu, từ ma thuật (biểu thị cấu trúc bắt đầu, kết thúc cấu trúc, v.v.) và chuỗi theo định dạng tùy chỉnh.

Những gì tôi muốn biết cụ thể là làm thế nào để làm điều này với STL và C ++ ... Vì định dạng chỉ đơn giản là để sử dụng một trò chơi, tôi nghĩ rằng nó sẽ dễ dàng hơn nhiều. Các định dạng nên:

  • Có thể đi qua được (tôi có thể nhìn qua nó và tìm điểm bắt đầu của cấu trúc và có thể kiểm tra tên của nó
  • Có thể giữ nhiều lớp và dữ liệu trong một tệp
  • có các phần bắt đầu và kết thúc có thể xác định được: chẳng hạn như khoảng trắng trong tệp văn bản
  • Có lẽ có biểu tượng riêng của nó để đại diện cho nó ??

Làm thế nào để tôi làm điều này trong c ++?



4
Ngoài ra tôi nghĩ rằng làm thế nào để làm cho định dạng tập tin là một chút sai lầm. Định dạng tập tin là bất cứ điều gì bạn ghi vào đĩa. Và nếu bạn biết bạn đã viết nó ra đĩa như thế nào, có lẽ bạn có thể tìm ra cách đọc lại. Lý do bạn sẽ xác định định dạng tệp là để những người không có mã của bạn có thể đọc tệp, nhưng có lẽ bạn không cần phải làm điều đó.
Tetrad

Câu trả lời:


9

hãy thử sử dụng boost serialization ! ngoài những gì bạn đang yêu cầu là làm thế nào để thực hiện tuần tự hóa và đó là một điều thực sự phức tạp! Gần đây tôi đã thực hiện một triển khai để tuần tự hóa và không có trường hợp nào dễ nói chuyện.

cũng có một cách khác để chỉ lưu một lớp vào tệp chứa tất cả thông tin bạn cần, giúp việc lưu / tải các lớp đơn giản hơn nhiều.

bằng cách biểu tượng không phải là bất cứ điều gì liên quan đến định dạng tệp, đó là thứ mà HĐH tạo ra cho mỗi tệp và thông thường các biểu tượng được lưu trữ ở đâu đó giữa các tệp HĐH. ngoại trừ các tập tin thực thi của windows (theo như tôi biết). Các tệp thực thi của windows giống như một thư mục được nén, chứa các hoạt động nhị phân thực tế, dữ liệu biểu tượng cho một số độ phân giải khác nhau và có thể một số dữ liệu khác liên quan đến chính hệ điều hành.


-1, những gì anh ta theo sau không phải là tuần tự nghiêm ngặt. +1 để đề cập đến các biểu tượng có liên quan đến O / S.
giảm tốc

@danien: theo như tôi có thể nói từ câu hỏi của anh ấy, anh ấy đang tìm cách nào đó để loại bỏ tất cả các lớp của mình và sau đó tải chúng về chính xác trạng thái sau khi chương trình khởi động lại. đó là tuần tự! lưu ý rằng anh ta muốn Có thể giữ nhiều lớp và dữ liệu trong một tệp .
Ali1S232

2
Nó thực sự gây ấn tượng với tôi như một vấn đề "lập trình cơ bản": biết cách chuyển đổi (hoặc tuần tự hóa nếu bạn sẽ) dữ liệu thành các định dạng hoặc cấu trúc khác nhau trước khi ghi chúng vào một tệp hoặc loại luồng nào. Chunks có thể được sử dụng để thêm thứ bậc, ngoài ra đó chỉ là vấn đề thử nghiệm. Không có câu trả lời chắc chắn cho điều này.
njdw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.