C ++调试器在控制台中跳过简单的代码行

时间:2013-03-22 01:12:45

标签: c++ visual-c++

我的调试器使用的代码(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循环的第二次迭代

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试更改以下代码:

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

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

了解这对您有何影响。我总是陷入类似的陷阱,通常可以通过清除缓冲区来解决它。