读取此文件以便稍后操作的最佳方法是什么?

时间:2017-09-18 06:42:56

标签: c++ data-structures operating-system fstream

我给出了一个如下所示的配置文件:

Start Simulator Configuration File
Version/Phase: 2.0
File Path: Test_2e.mdf
CPU Scheduling Code: SJF
Processor cycle time (msec): 10
Monitor display time (msec): 20
Hard drive cycle time (msec): 15
Printer cycle time (msec): 25
Keyboard cycle time (msec): 50
Mouse cycle time (msec): 10
Speaker cycle time (msec): 15
Log: Log to Both
Log File Path: logfile_1.lgf
End Simulator Configuration File

我应该能够获取此文件,并将循环和循环时间输出到日志和/或监视器。然后我应该从元数据文件中提取数据,该文件将告诉我每个运行的循环次数(以及其他内容)然后我应该计算并记录总时间。例如,5个硬盘驱动器周期为75毫秒。配置和元数据文件可以按任何顺序排列。

我在想我会将每个项目放在一个数组中,然后在字符串匹配时循环等待true(这也有助于检测文件错误)。尽管订单不同,配置文件应始终保持相同的大小。元数据文件可以是任何大小,所以我想我会做一个类似的事情,但在向量中。 然后,我将配置文件中的循环时间乘以匹配元数据文件字符串中的循环数。我认为从向量中读取数据的最佳方法是在队列中。

这听起来像个好主意吗? 我理解大多数概念。但是我的数据结构在实际编码方面是不稳定的。例如,当从文件中读取时,我应该逐行读取它,还是最好将int与字符串分开以便以后计算它们?我从来没有必要从以前可以改变的文件中做到这一点。 如果我将它们分开,我是否必须使用单独的数组/向量?

我正在使用C ++ btw

1 个答案:

答案 0 :(得分:1)

你的逻辑应该是:

  1. 创建两个<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>变量,一个将字符串映射到字符串,另一个将字符串映射到浮点数。
  2. 阅读文件的每一行
  3. 如果该行包含std::map,则将该字符串拆分为两部分:

    3A。 A部分是从零开始的行,1 - 减去:

    的索引

    3B。 B部分是从:

  4. 的索引的1+开始的行的一部分
  5. 根据值类型,使用这两部分存储在自定义:类型中。

  6. 现在您已正确阅读该文件。当您读取元文件时,您只需在元数据文件中查找键,使用它来查找配置文件数据中的相应键(以获取值),然后执行任何需要的数学运算。