我的调试器使用的代码(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循环的第二次迭代
任何帮助将不胜感激
答案 0 :(得分:0)
您使用的是发布模式还是调试模式? 如果处于释放模式,则会优化汇编代码。如果您使用该代码进行调试,则始终不会逐行移动。
答案 1 :(得分:0)
尝试更改以下代码:
cin.ignore();
cin.sync();
cout<<"Enter the name of a task: ";
getline(cin, task[x].name);
了解这对您有何影响。我总是陷入类似的陷阱,通常可以通过清除缓冲区来解决它。