while 循环总是 true c++
While loop becomes allways true c++
我有这个功能,需要几小时和几分钟的时间。如果定界符不是冒号,则应该报错。如果小时大于 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);
}
在函数中,您设置一次冒号的值然后进入无限循环,对此的解决方案是在 while 循环中使用字符串流,如下所示:
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);
}
希望对您有所帮助
我有这个功能,需要几小时和几分钟的时间。如果定界符不是冒号,则应该报错。如果小时大于 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);
}
在函数中,您设置一次冒号的值然后进入无限循环,对此的解决方案是在 while 循环中使用字符串流,如下所示:
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);
}
希望对您有所帮助