2017-02-21 71 views
1

我正在处理一个程序,我的“数据库”是一些.csv文件。C++中的数据处理

我有一个.csv中的对象的列表,每个对象都有一些信息。这是处理“数据”的最佳方式。

  • 与fstream的工作,这意味着每次我想要修改的数据,或者我想读的东西,我会直接与我的档案工作与fstream的
  • 的工具,或者说,在节目的开始我将加载矢量中的数据,读取,写入矢量,并在程序结束时删除以前的文件并加载新的文件。

在表现方面会有所不同吗?考虑到物体很多。

+1

当你按照你的第二种方法并且在程序执行期间文件被修改时会发生什么?除了这两种方法之间的明显差异之外,即使是在性能影响方面,也没有足够的背景知识。 – mpiatek

+1

打开,读入缓存并关闭文件。定期将缓存写入文件,如果它已被修改。绝对写出口。你甚至不需要删除旧文件。只需打开文件并在其上写下。 – user4581301

+0

我认为我的观点很明确。由fstream我的意思是输入/输出流类 –

回答

2

我认为它更像是一种组合而不是选择A或B.特别是只选择A.不安全,因为多个组件可以同时访问该文件。另外如果有很多更新,那么每次使用流可能会让你的代码非常慢。

因此,我相信你应该使用B,但也照顾实施,以安全的方式保存数据(将数据写入文件中)。

关于数据结构,这取决于使用情况。这里要问的一个重要问题是是否有很多插入和删除操作。如果是这种情况,那么使用list而不是矢量会更有效,因为该列表提供即时时间插入,并且vector不适合于此目的。

如果数据包含唯一属性并且需要快速查找,那么散列或地图会更合适。

0

从我的CSVtoC实用程序中获取CSV分析器。

http://www.malcolmmclean.site11.com/www/

CSV文件是不利于动态更新的记录不是固定在已知的磁盘的物理位置。 (另一种方法是设计CSV,以使其不起作用,但这是一种微妙而杂乱的方法)。

读取CSV很困难,写一个很简单。