1

我期待在每次重新启动程序时使我的数据可用。我很好奇哪种方式是存储到文件而不是读回程序的最佳方式。我一直在网上阅读一些东西,最大的问题是 XML 还是二进制格式?我还在学习 c++ 我不掌握它。该程序的对象是类型string int int......你建议我使用哪种方式,为什么?

还有一件事,有人知道这方面的好教程吗to binaryto XML

很抱歉缺少代码部分,但我想知道比我更高级的程序员的一些意见。:P

4

3 回答 3

3

我不同意。有很多可用的选项。我在这里为您命名了另外两个:1)您可能会查看一种名为json的文件格式,它有一个自己的网站(我们中的一些人不这样做)。它声称是一种轻量级的数据交换格式。2) 有一种名为 csv 的文件格式。它的用法已经在stackoverflow上讨论过

于 2012-05-22T12:36:40.473 回答
3

除了马泰斯评论:

我认为最明显的格式在您的情况下是正确的,那只是纯文本。

只需以纯文本(通常由空格分隔)序列化您的数据。PT 的好处是它是人类可读的、人类可修改的、易于使用流(>> 标记化或增强标记化器)进行处理、灵活且比 XML 轻得多。

例如,您可能想要存储

struct {
    std::string name;
    int age;
    double height;
};

你会写:

John 21 5.4
Bill 31 4.9

或者你有什么。这总是很方便的,例如 name 可以包含两个单词,所以:

John Smith

并且标记器会在空格上拆分并尝试将 smith 解析为 int ,但使用分隔符解决这个问题很容易。如 ””

于 2012-05-22T12:43:45.450 回答
2

即使您的进程被过早地终止(例如由于断电、硬件故障或代码本身的严重错误),您是否需要稳健的行为?

如果是这样,请考虑使用“嵌入式”数据库,例如 SQLite 或 MS SQL Server Compact(等)。这些系统的事务性质应确保您最终不会收到损坏的数据,这会阻止您的程序正确启动。

此外,某些文件系统支持事务(例如 Windows Vista 或更高版本中的事务性 NTFS)。

于 2012-05-22T12:45:33.423 回答