怎么了,我正在处理这个正在进行的这个大项目的另一个问题。
该项目是为了学校,但这不是整个项目。有关该项目的更多信息,请查看here。
所以我必须以下列格式从用户那里获取输入:
p 11:45 12:15
它始终以p
或s
开头,并且有两次在手机上有通话。最重要的是比较手机计划,考虑白天分钟,夜间分钟等。
现在我无法接受输入。每次运行程序时,我都不关心是否使用s
启动输入并且只是等待更多数据。令人沮丧的是,它不久前就开始工作了。
这是我的代码:
string c;
string end = "s";
string start = "p";
int temp_start_hour;
int temp_start_min;
int temp_end_hour;
int temp_end_min;
char colon;
do {
cin >> c;
cout << c << endl;
if (c != start && c != end)
{
cout << "ERROR IN INPUT" << endl;
return 1;
}
if (c != end)
{
cin >> temp_start_hour >> colon >> temp_start_min;
cin >> temp_end_hour >> colon >> temp_end_min;
begin_hours[i] = temp_start_hour;
begin_min[i] = temp_start_min;
end_hours[i] = temp_end_hour;
end_min[i] = temp_end_min;
}
i++;
} while (c != end);
答案 0 :(得分:0)
您的代码(通过几个调整来编译)对我来说很好。你可以发布你发送给它的输入导致程序失败吗?
答案 1 :(得分:0)
如果您的输入流进入错误状态,您的循环将永远不会结束。那是因为如果它处于错误状态,则不会将任何内容写入cin >> c
中使用的任何变量,而c
将永久保留其最后一个值。
要解决此问题,您应该使用while(cin)
循环而不是do-while循环,或者在if( cin.fail() )
之后检查cin >> c
。
或者你可以在开始循环之前调用cin.exceptions ( ifstream::failbit | ifstream::badbit )
。如果出现任何问题,这将启用从流输入函数抛出的C ++异常。