1

我对我正在使用的调试器(Visual C++ 和 Bloodshed Dev C++)的代码有疑问,它只是跳过了应该输入的一行代码左右。这是代码:

for(x = 0; x < TASKLIMIT; ++x)
{
    cout<<"Enter the name of a task: ";
    getline(cin, task[x].name);
    cout<<"Enter the priority of the task: ";
    cin>>task[x].priority;
    while (task[x].priority > 10 || task[x].priority < 1)
    {
        cout<<"Enter a number from 1-10: ";
        cin>>task[x].priority;
    }
    cout<<"Enter the estimated completion time of the task: ";
    cin>>task[x].completion;
    cout<<"Enter the deadline of the task: ";
    cin>>task[x].deadline;
}

问题偶尔会移动线路首先它在线路中

cin>>task[x].deadline; 

然后它移动到:

getline(cin, task[x].name);

当它到达 for 循环的第二次迭代时

任何帮助,将不胜感激

4

2 回答 2

0

你使用发布模式还是调试模式?如果您处于发布模式,则会优化汇编代码。如果您使用该代码进行调试,它总是不会逐行移动。

于 2013-03-22T02:43:34.313 回答
0

尝试更改以下代码:

cin.ignore();
cin.sync();

cout<<"Enter the name of a task: ";
getline(cin, task[x].name);

看看这对你有什么影响。我总是陷入类似的陷阱,通常可以通过清除缓冲区来解决。

于 2015-05-04T00:24:50.697 回答