2016-07-27 57 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部分。