0

怎么了,我正在处理的这个庞大的项目还有另一个问题。

该项目是为学校设计的,但这不是全部。有关该项目的更多信息,您可以查看此处

所以我必须以以下格式从用户那里获取输入:

p 11:45 12:15

它总是以 ap或 an开头,s并且有两次电话通话。最大的想法是比较手机计划,考虑白天分钟,晚上分钟等。

现在我无法接受输入。每次我运行程序时,它并不关心我是否以 an 开始输入,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);
4

2 回答 2

0

您的代码(经过一些调整以使其编译)对我来说工作正常。您能否发布您发送给它的导致程序失败的输入?

于 2011-10-11T00:05:09.530 回答
0

如果您的输入流进入错误状态,您的循环将永远不会结束。那是因为如果它处于错误状态,则不会将任何内容写入其中使用的任何变量,cin >> c并将c永远保留其最后一个值。

要解决此问题,您应该真正使用while(cin)循环而不是 do-while 循环,或者检查if( cin.fail() )after cin >> c

或者您可以cin.exceptions ( ifstream::failbit | ifstream::badbit )在开始循环之前调用。如果出现任何问题,这将启用从流输入函数抛出的 C++ 异常。

于 2011-10-11T00:12:07.007 回答