C++ 为什么我的代码在运行时会停留在循环中
当我按enter键时,我的程序只是在循环中运行,我不知道为什么它会这样运行,这对我来说并不像是一个无限循环。尝试将开始时间输入为: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:
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 >> ...