2016-07-27 122 views
-6

我无法使用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"; 
    } 
} 
+5

你为什么期望循环停止? END始终是错误的。 – Ian

+0

'END'在while循环内永不改变 – DimChtz

+0

您的意思是您不知道如何检查输入是否为“END”?因为正如其他人指出的,你永远不会改变该变量的值,所以当然循环永远不会终止。 – Borgleader

回答

3
if (track == "END") 
    break;// or whatever you want to happen, e.g. END = true 

你需要检查对用户输入。

+2

...然后,循环可以简单地为'while(true){'...对于任何后续程序员的直接线索,我们只是从这个循环中'打破'。 –

3

事实上,没有必要使用带有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部分。