C++ 为什么我的代码在运行时会停留在循环中

C++ 为什么我的代码在运行时会停留在循环中,c++,C++,当我按enter键时,我的程序只是在循环中运行,我不知道为什么它会这样运行,这对我来说并不像是一个无限循环。尝试将开始时间输入为: Main menu options: 1. Select a device to program (contains a submenu) 2. Display current status of all devices 3. Exit Enter your option => 1 Select a device:

当我按enter键时,我的程序只是在循环中运行,我不知道为什么它会这样运行,这对我来说并不像是一个无限循环。尝试将开始时间输入为:

Main menu options: 
      1. Select a device to program (contains a submenu)
      2. Display current status of all devices
      3. Exit
Enter your option => 1
Select a device:
         1. PVR
         2. Camera DVR
         3. Oven
Enter your option => 1
Select the channel ==> 23
Enter start date and start time: 12:01:19 20:00:00

cin不会神奇地处理输入中的“:”字符,因此您可能需要读取整行,并解析出“:”字符

问题在于,您的程序希望用户将时间和日期作为空格分隔的值输入,但您将它们作为冒号分隔的值输入

这意味着

12 1 19  20 0 0
12
读入
startTime.tm\mday
,但输入中有一个
,与
startTime.tm\u mon
的类型不匹配。这将停止所有输入读取,将
保留在输入缓冲区中,供下次输入操作使用


下一个输入操作用于
stopTime
,由于输入缓冲区中的
,该操作将立即失败。然后回到
子菜单
函数中,冒号将被读入
c
。和
:“
不等于
'Y'
'Y'
,因此循环结束,
子菜单
函数返回到
主菜单
,再次打印菜单。

不初始化
PrgDevice
成员变量,它们的值是不确定的,使用它们将导致未定义的行为。创建一个初始化它们的构造函数。
12 1 19  20 0 0
cin >> startTime.tm_mday >> startTime.tm_mon >> ...