虽然循环变为真正的c ++

问题描述 投票:-2回答:1

我有这个功能,需要几小时和几分钟的吞吐量。如果分隔符不是冒号而应该给出错误。如果小时大于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);
}
c++ while-loop getline
1个回答
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);
}

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.