【问题标题】:Reading/Writing several structs of unknown size to file C++读取/写入几个未知大小的结构到文件 C++
【发布时间】:2017-10-13 07:47:02
【问题描述】:

我想做一个图书数据库来记录我读过的书。到目前为止,我已经有了一个书籍条目的结构。

struct Entry
{
    string title;
    string author;
    int pages;
};

如您所见,title 和 author 变量的大小未确定。我想在一个文件中存储多个结构,然后在我想显示数据库时读取所有这些结构。

如何从文件中读取/写入其中的几个结构?我必须有预先确定的尺寸吗?请举个例子。

【问题讨论】:

  • 您需要发明一种既描述又包含数据的文件格式,例如:
  • 到目前为止你做了什么?你可以添加代码,你如何写入文件?
  • XML 或 JSON 可能是保存这些信息的好格式
  • 您可以使用sqlite,这是一个非常简单的数据库,不需要服务器或任何安装 - 这也意味着您也可以非常简单地从命令行管理数据库。 .zetcode.com/db/sqlite/tool
  • @rak007 谢谢,正在研究 XML

标签: c++ database file file-io fstream


【解决方案1】:

您可以通过以下方式轻松地将其存储为 CSV 格式:

title_1,author_1,pages_1,title_2,author_2,pages_2,title_3,auth...

读回文件时,根据你的分隔符解析文件,你就得到了你的数据。

编辑: 正如@Mark Setchell 建议的那样,您不应使用 ',' 作为分隔符,因为逗号也可能是标题本身的一部分。相反,您应该使用更稀有的字符作为分隔符,这在可能的书名中并不经常使用。一些例子是 ';' '|' 或 '#' 甚至是不可打印的字符

【讨论】:

  • 由于逗号可以出现在书名中,它们可能不是最好的 CSV 分隔符,因为标题中的逗号会让你的解析器相信它现在已经转移到作者身上...您可能会更喜欢| 作为分隔符,甚至是 NULL。
猜你喜欢
  • 2016-09-04
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2018-08-31
  • 1970-01-01
相关资源
最近更新 更多