CFile写作问题

时间:2011-09-13 18:01:32

标签: c++ mfc

在我的MFC应用程序中,我使用CFile类将数据写入文件。我按顺序为每个数据成员使用Write()方法存储类CParagraph的一系列对象。我使用Read()方法从文件读入内存。其中一个CParagraph的成员曾经是int类型,但现在我必须将其更改为size_t,因为int无法保存足够大的数据。如果我的应用程序读取在此更改之前创建的文件,然后将CParagraph对象保存回文件,则size_t的大小将传递给Write方法而不是int的大小,因此文件将增长。我的问题是:在对象被修改和保存之后写入的数据是否会被覆盖并因此被破坏,因为对象变大了?

感谢。

1 个答案:

答案 0 :(得分:0)

是。如果文件中的任何内容更改大小,则必须重新保存其后的所有内容。

将“version”字符保存为文件的第一部分是很常见的。然后,当您需要调整变量大小(或更改大量内容)时,可以在保存时更改版本。然后,在加载时,您可以检查版本,并使用相应的代码加载它。然后,您仍然可以打开旧版本的文件。请注意,此版本只应在文件格式更改时更改,而不是在重建/发布时更改。