读取此文件以便稍后操作的最佳方式?
Best way to read this file to manipulate later?
我得到了一个如下所示的配置文件:
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
我应该能够获取此文件,并将周期和周期时间输出到日志 and/or 监视器。然后我应该从元数据文件中提取数据,该文件会告诉我每个 运行(除其他外)有多少个周期,然后我应该计算并记录总时间。例如 5 个硬盘驱动器周期为 75 毫秒。配置和元数据文件可以按任何顺序出现。
我想我会把每个项目放在一个数组中,然后在字符串匹配时循环等待 true(这也有助于检测文件错误)。尽管顺序不同,配置文件的大小应始终相同。元数据文件可以是任意大小,所以我想我会做类似的事情,但在一个向量中。
然后我将配置文件中的周期时间乘以匹配元数据文件字符串中的周期数。我认为从向量中读取数据的最佳方式是在队列中。
这听起来是个好主意吗?
我理解大部分概念。但是就实际编码而言,我的数据结构不稳定。例如,当从文件中读取时,我应该逐行读取它,还是最好将 int 与字符串分开以便稍后计算它们?我从来没有必要从以前可以更改的文件中执行此操作。
如果我将它们分开,我是否必须使用单独的 arrays/vectors?
顺便说一句,我正在使用 C++
你的逻辑应该是:
- 创建两个
std::map
变量,一个将字符串映射到字符串,另一个将字符串映射到浮点数。
- 读取文件的每一行
如果该行包含:
,则将字符串拆分为两部分:
3a. A部分是从零开始的行,并且1-减去:
的索引
3b。 B部分是从1+索引开始的行的一部分:
根据值类型,使用这两个部分存储自定义 std::map
类型。
现在您已经正确阅读了文件。当您读取元文件时,您将简单地在元数据文件中查找键,使用它在您的配置文件数据中查找相应的键(以获取值),然后进行任何需要的数学运算。
我得到了一个如下所示的配置文件:
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
我应该能够获取此文件,并将周期和周期时间输出到日志 and/or 监视器。然后我应该从元数据文件中提取数据,该文件会告诉我每个 运行(除其他外)有多少个周期,然后我应该计算并记录总时间。例如 5 个硬盘驱动器周期为 75 毫秒。配置和元数据文件可以按任何顺序出现。
我想我会把每个项目放在一个数组中,然后在字符串匹配时循环等待 true(这也有助于检测文件错误)。尽管顺序不同,配置文件的大小应始终相同。元数据文件可以是任意大小,所以我想我会做类似的事情,但在一个向量中。 然后我将配置文件中的周期时间乘以匹配元数据文件字符串中的周期数。我认为从向量中读取数据的最佳方式是在队列中。
这听起来是个好主意吗? 我理解大部分概念。但是就实际编码而言,我的数据结构不稳定。例如,当从文件中读取时,我应该逐行读取它,还是最好将 int 与字符串分开以便稍后计算它们?我从来没有必要从以前可以更改的文件中执行此操作。 如果我将它们分开,我是否必须使用单独的 arrays/vectors?
顺便说一句,我正在使用 C++
你的逻辑应该是:
- 创建两个
std::map
变量,一个将字符串映射到字符串,另一个将字符串映射到浮点数。 - 读取文件的每一行
如果该行包含
:
,则将字符串拆分为两部分:3a. A部分是从零开始的行,并且1-减去
的索引:
3b。 B部分是从1+索引开始的行的一部分
:
根据值类型,使用这两个部分存储自定义
std::map
类型。
现在您已经正确阅读了文件。当您读取元文件时,您将简单地在元数据文件中查找键,使用它在您的配置文件数据中查找相应的键(以获取值),然后进行任何需要的数学运算。