【发布时间】:2014-05-06 16:34:38
【问题描述】:
我正在学校做一个项目,我们的任务是这样的。
有一个包含以下信息的输入文本文件
08:30 Jane 10:15
08:35 Eric 11:20
08:45 Austin 11:45
09:20 Mclaren 12:50
这是在某公司工作的四名员工的入职时间、姓名和离职时间。
我应该做的是找到在里面停留时间最长的人并显示他们的名字。
(所有3个信息都是字符串类型。)
为此,我必须从一个人的离开时间中减去进入时间,将其变成一个整数值,对所有其他人执行此操作,然后比较所有这些整数并找出哪个是最大的。
问题是我不知道如何将(例如)08:45 转换为整数。我知道 C++ 可以按字典顺序比较两者,并且能够判断 10:15 大于 9:45 但不幸的是它不能减去它们。有没有一种方法可以在 C++ 中做到这一点?
或者我是否必须做一些复杂的事情并制作某种分隔符(“:”),然后取字符串的第一部分,如 08,并将其作为小时,乘以 60(在 08 之后以某种方式转换为int 8)以获得分钟,然后取分隔符后的值并将其添加到该值(在分钟转换为int之后),以获得总分钟数?对我来说听起来很复杂,我在 C++ 方面的知识也很有限,但我猜这种做事方式需要一个巨大的开关表,它将“08”转换为整数 8,依此类推,从 00 一直到60(60 例)。
一定有更简单的方法。任何帮助将不胜感激。
编辑:澄清一下,我已经知道如何从文本文件中分离出时间并将它们放入单独的字符串中。我需要有关转换本身的帮助。如何将该字符串格式的时间转换为可用的整数值。
EDIT2:使用子字符串和 atoi 解决。感谢您的帮助。
【问题讨论】:
-
我会尝试将这两个值转换为分钟,减去并将结果再次转换回(完整)小时。
-
你的分隔符方法不需要一个巨大的开关表,它不应该很复杂......但是他们在学校教你什么关于 c++(特别是转换的东西)?
-
你能发布你的代码吗?你几乎肯定会让问题变得比它需要的更难。