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);
}

希望对您有所帮助