Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用C++;在windows上编程_C++_Windows - Fatal编程技术网

C++ 如何使用C++;在windows上编程

C++ 如何使用C++;在windows上编程,c++,windows,C++,Windows,在我的程序中,我正在编写一个程序状态文件。 在程序运行期间,我多次将该文件写入该文件,因为程序经常更改一些需要存储的变量 现在,如果,由于某种原因,我的力量失败了。 然后大部分时间我在那个文件中丢失了数据 请告诉我哪种机制即使停电也能保护数据。 (我在Windows上编写了C++程序)。 谢谢您使用事务数据库,如SQL Server。定期将更改提交到数据库。数据库服务器断电时,数据不太可能损坏,但明智的做法是定期备份,以防万一。尽可能频繁地备份文件,或者获取一个;) 根据建议,您可以使用事务数据

在我的程序中,我正在编写一个程序状态文件。 在程序运行期间,我多次将该文件写入该文件,因为程序经常更改一些需要存储的变量

现在,如果,由于某种原因,我的力量失败了。 然后大部分时间我在那个文件中丢失了数据

请告诉我哪种机制即使停电也能保护数据。 (我在Windows上编写了C++程序)。
谢谢您使用事务数据库,如SQL Server。定期将更改提交到数据库。数据库服务器断电时,数据不太可能损坏,但明智的做法是定期备份,以防万一。

尽可能频繁地备份文件,或者获取一个;)

根据建议,您可以使用事务数据库来跟踪状态。如果出于各种原因,您希望继续使用普通文件:

我建议使用一个始终附加在后面的基于事务的数据文件,而不是一个不断重写的文件。换句话说,当您第一次创建文件时,将完整的数据集作为开始状态写入。然后,对于程序写入的每个更改,保留现有文件并仅附加更改(例如,记录变量B更改为42),而不是重写整个文件。当文件达到一定大小时,您将关闭它,以当前的完整状态启动一个新文件,然后重复


恢复将稍微复杂一些,因为您必须恢复整个状态文件,但如果有任何数据(经常刷新),则不应丢失太多。

如果当前每个安装都使用一个平面文件,则是一个不错的选择。它是一个公共域单文件数据库,设计用于存储数据,包括在数据写入期间对电源故障的恢复能力。有多种方法可供选择。

您需要使用FlushFileBuffers(win32 API)或POSIX fsync(用于POSIX操作系统)来确保数据以物理方式写入磁盘。一旦调用它,您就可以确保数据是持久的。这就像穷人的酸液


但是请注意,这个函数非常慢。。。小心使用。

UPS不能防止程序或操作系统崩溃,在我的世界里,这些情况比断电情况更常见。大多数情况下,程序崩溃。-1这不能保护您的计算机免受电源故障的影响,因为它不能确保数据写入磁盘。@Artyom:这很公平,但您的解决方案没有提到备份。