C++ 如何编写部分文件?

C++ 如何编写部分文件?,c++,windows,file-io,C++,Windows,File Io,我需要定期写一些东西来防止数据丢失。棘手的一点是,并非所有写入文件的内容都会一直更改,但它们可能会一直更改,数据各个区域中内容更改的速率由用户决定,并且是不可预测的 由于数据的结构将保持不变,是否可以只写入文件的一部分?此外,这种方法与将数据存储到多个文件中相比如何?例如,如果我单独存储每个变量(可能有数千个,我可能在任何情况下都不会沿着这条路径进行)?可以查找并写入文件中的任意位置,但是,只有当您正在写入的字符数与您正在替换的字符数相同,或者如果文件结构有其他方式来分隔数据,并且您在写入时保持

我需要定期写一些东西来防止数据丢失。棘手的一点是,并非所有写入文件的内容都会一直更改,但它们可能会一直更改,数据各个区域中内容更改的速率由用户决定,并且是不可预测的


由于数据的结构将保持不变,是否可以只写入文件的一部分?此外,这种方法与将数据存储到多个文件中相比如何?例如,如果我单独存储每个变量(可能有数千个,我可能在任何情况下都不会沿着这条路径进行)?

可以查找并写入文件中的任意位置,但是,只有当您正在写入的字符数与您正在替换的字符数相同,或者如果文件结构有其他方式来分隔数据,并且您在写入时保持最新状态时,这种方法才有效。

在一天结束时,如果您确实知道可能需要存储的所有数据元素,您可以开发自己的严格的文件格式,可以使用行分隔,也可以使用其他方法轻松地到达要更改的位置。但是,如果您存储的是字符串之类的内容,其大小可能会发生变化,那么搜索可能会很容易,但修改可能会更困难,因为下面的所有内容都必须向下推,以便添加更长的字符,或者在数据缩小时向上移动

也许我认为这样做的方式是,当一个值从您知道的文件中已经存在的值发生变化时,将整个文件写出来,否则就不用管它了


我认为您还需要意识到,与再次写入整个文件相比,尝试修改文件的一部分可能不会带来任何性能提升。它是将整个文件的写入与文件的查找进行比较,再加上可能读取要修改的内容,修改,然后重新写入要修改的元素的增长或收缩所做的所有内容。

您可以将任何内容写入文件。这取决于代码的编写方式。你能提供一个简单的例子吗?为了澄清,我想部分覆盖一个文件。我还没有任何代码,因为我还在考虑我的选择。你是在寻找一个可移植的解决方案,还是一个特定于windows的解决方案?关键是你需要打开一个文件进行写入而不删除它,查找到正确的位置,然后写入,查找到下一个偏移量,等等。