我有这个功能,需要几小时和几分钟的输入。如果分隔符不是冒号而应该给出错误。如果小时大于23且分钟大于59,则相同。使用我当前的循环,while bool似乎总是正确的。我做错了什么?看不到任何我可能改变的东西。
int delaString(string &samtalStart, int &timmarStart, int &minuterStart) {
istringstream is(samtalStart);
char colon;
getline(cin, samtalStart);
is >> timmarStart >> colon >> minuterStart;
while (colon != ':' || timmarStart > 23 || minuterStart > 59) {
cout << "Inkorrekt inmatning, var vänligen skriv in en timme mellan 00-23 och minuter mellan 0-59 i formatet tt:mm.\n" << endl;
getline(cin, samtalStart);
}
// is >> timmarStart >> colon >> minuterStart;
return(timmarStart, minuterStart);
}
答案 0 :(得分:1)
在函数中设置冒号的值一次然后进入无限循环解决方案就是在while循环中使用stringstream:
int delaString(string &samtalStart, int &timmarStart, int &minuterStart) {
char colon;
getline(cin, samtalStart);
istringstream is(samtalStart);
is >> timmarStart >> colon >> minuterStart;
while (colon != ':' || timmarStart > 23 || minuterStart > 59) {
cout << "Inkorrekt inmatning, var vänligen skriv in en timme mellan 00-23 och minuter mellan 0-59 i formatet tt:mm.\n" << endl;
getline(cin, samtalStart);
istringstream iss(samtalStart);
iss >> timarStart >> colon >> minuterStart;
}
// is >> timmarStart >> colon >> minuterStart;
return(timmarStart, minuterStart);
}
希望这有帮助