例如,我得到一个看起来像这样的配置文件:

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(这也将有助于检测文件错误)。尽管顺序不同,但配置文件的大小应始终相同。元数据文件可以是任何大小,因此我想我会做类似的事情,但要使用 vector 。
然后,我将配置文件中的循环时间乘以匹配的元数据文件字符串中的循环数。我认为从 vector 中读取数据的最佳方法是在队列中。

听起来像个好主意吗?
我了解大多数概念。但是我的数据结构在实际编码方面有些不稳定。例如,当从文件中读取时,我应该逐行读取它,还是最好将int与字符串分开以便以后进行计算?我从不需要更改过的文件中执行此操作。
如果我将它们分开,是否必须使用单独的数组/ vector ?

我正在使用C++ btw

最佳答案

您的逻辑应为:

  • 创建两个std::map变量,一个变量将字符串映射为字符串,另一个变量将字符串映射为float。
  • 读取文件
  • 的每一行
  • 如果该行包含:,则将字符串分成两部分:

    3a。 A部分是从零开始的行,并且减去:的索引为1

    3b。 B部分是该行的一部分,从1+ :
  • 的索引开始
  • 使用这两个部分可以根据值类型存储在自定义std::map类型中。

  • 现在,您已正确读取文件。读取元文件时,您只需在元数据文件中查找键,使用它在配置文件数据中查找对应的键(以获取值),然后执行所需的任何数学运算。

    08-06 03:36
    查看更多