CFile写入问题

发布于 2024-12-04 09:46:05 字数 313 浏览 0 评论 0原文

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

谢谢。

In my MFC application, I am using CFile class to write data to file. I store a sequence of objects of class CParagraph using Write() method for each data member in order. I use then Read() method to read from file into memory. One of the CParagraph's members used to be of type int, but now I have to change it to size_t, as int cannot hold data large enough. If my application reads a file created before this change, and then a saves a CParagraph object back into the file, size of size_t will be passed to the Write method instead of size of int, so the file will grow. My question is this: can the data written after the object being modified and saved be overwritten and thus corrupted because the object became larger ?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拥抱没勇气 2024-12-11 09:46:05

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

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

Yes. If anything in the file changes size, everything after it must be re-saved.

It's common to save a "version" char as the first part of a file. Then, when you need to resize a variable (or change tons of things), you can change the version when saving. Then, while loading, you can check the version, and use the coresponding code to load it. Then you can still open files from older versions. Note that this version should only change when the file format changes, not when you rebuild/release.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文