我即将开始一个小项目,我正在尝试创建一个C ++程序,将库存数据存储到一个文件中(我猜一个.txt会这样做)
我需要能够:
•将新记录添加到文件中 •显示文件中的任何记录 •更改文件中的任何记录
在我开始之前是否有任何我应该知道的事情可以使这更容易和高效......
例如,我应该尝试使用XML还是通过C ++使用XML太难了?
我从未真正理解这种做法的最有效方法。
我会搜索文件并在括号中查找内容吗?
修改的
数据量不应太大。这是我可以说的功课。我想将结构的内容写入文件的路径,我该怎么做呢?
答案 0 :(得分:4)
有很多方法。这是作业还是实际使用?如果是家庭作业,可能会对您使用的内容有一些限制。
否则我建议使用像SQLite这样的嵌入式DBMS。还有其他一些,但这将是最强大的解决方案,也将是最简单的实现。
XML也是可以接受的,并且有许多可重用的实现可用,但是一旦你进入数千条记录,它将开始失去性能。 JSON也是如此。人们可能仍然会争论哪一个更简单 - JSON或XML。
另一种可能性是创建struct
并将其内容直接写入文件。如果记录大小不是恒定的话,会变得棘手。而且,如果记录格式发生变化,则需要重建该文件。否则,如果仔细实施,此解决方案可能是性能最佳的解决方案之一。
答案 1 :(得分:1)
请您告诉我们您为什么不想使用数据库引擎呢?
如果只是为了学习那么....请告诉我们该文件中存储数据的估计大小和访问模式(有多少用户,他们多久做一次等等)?
挑战将是创建有效的搜索和修改代码。
对于搜索,它涉及数据结构和组织。 对于修改,它是如何编写文件更新而不将其完全读入内存,在那里更新然后再将其完全写回文件。
答案 2 :(得分:1)
如果这是一个实际使用的项目,并且有可能随着时间的推移添加功能,那么从一开始就寻求数据库解决方案,即使它看起来有点过分。我之前一直在这条路上,随着时间的推移,小功能会被添加,在你意识到它之前你已经实现了一个数据库。糟糕。咬紧牙关并使用数据库。
如果这是学习练习,则取决于您要存储的数据量。如果它很小,最简单的方法是将整个文件读入内存并在那里进行操作。进行更改时,将整个文件写回磁盘。如果数据太大而无法做到这一点,那么下一个最好的事情就是拥有固定大小的记录。创建一个包含所有数据的POD结构(即没有指针,stl容器等)。然后,您可以重写单个记录,而无需重写整个文件。如果这些都不起作用,那么最好的选择是数据库解决方案。
答案 3 :(得分:0)
如果您坚持手动执行,我建议使用JSON而不是XML。
另外,请考虑使用sqlite。
答案 4 :(得分:0)
这听起来像是SQLite的完美工作。小巧,快速,灵活且易于使用。