如何使用bool sentinel值在C++中结束while循环?
问题描述:
我无法使用END的bool值来停止运行循环(代码如下)。该程序的其余部分工作,但我似乎无法让我输入end时停止循环。有什么建议么?如何使用bool sentinel值在C++中结束while循环?
bool END = false;
while (!END)
{
cout << "Please enter a song or END to terminate: ";
getline(cin, track);
results = binarySearch(tracks, numTracks, track);
if (results == -1)
cout << track << " is not on the set list.\n";
else if (results != -1)
{
cout << track << " is on the set list.\n";
}
}
答
if (track == "END")
break;// or whatever you want to happen, e.g. END = true
你需要检查对用户输入。
+2
...然后,循环可以简单地为'while(true){'...对于任何后续程序员的直接线索,我们只是从这个循环中'打破'。 –
答
事实上,没有必要使用带有bool变量的while循环作为条件。你可以用下面的方法重写你的循环:
while (true)
{
cout << "Please enter a song or END to terminate: ";
if (!getline(cin, track) || track == "END") break;
results = binarySearch(tracks, numTracks, track);
if (results == -1)
{
cout << track << " is not on the set list.\n";
}
else
{
cout << track << " is on the set list.\n";
}
}
还要注意if-else语句的else部分。
你为什么期望循环停止? END始终是错误的。 – Ian
'END'在while循环内永不改变 – DimChtz
您的意思是您不知道如何检查输入是否为“END”?因为正如其他人指出的,你永远不会改变该变量的值,所以当然循环永远不会终止。 – Borgleader