我目前正在編寫遊戲「Mastermind」的一個版本,並且希望在用戶輸入字母'Q'時不管它是從主菜單還是從主菜單中退出在比賽期間被要求做出猜測。用C++函數中的用戶輸入退出程序
我遇到的問題是,選定的用戶輸入是從一個函數內進行評估的,通常從另一個函數中調用,我不確定如何正確退出遊戲而不忽略當前堆棧的清理。我想我可以嘗試做一個自定義的異常(雖然我不確定如何在C++中做到這一點,仍然在學習),然後將每個調用放在main()中,稍後可以調用menuSelection()函數。嘗試抓住,但我不知道這是否是最佳的。
我會嘗試給出一個我的程序的快速非常概括的例子。很明顯,它只是爲了顯示我的程序在什麼時候遇到退出場景。
void printMainMenu(){
cout<<"blah blah blah... Enter a selection: ";
string input;
getline(cin, input);
menuSelection(input);
}
void menuSelection(string input){
if(input == 'Q')
Exit Program; // <-- Need to exit when here
else
(other options);
}
int main(){
printMainMenu(); // <-- menuSelection called here
while(cin >> solution){
GameBoard currentGame = GameBoard::GameBoard(solution);
cout>>"Please make a guess or enter 'Q' to quit: ";
string guess;
getline(cin, guess);
if(guess.size() == 1)
menuSelection(guess); // <-- and here
else
currentGame.checkGuess(guess);
}
}
會放置每個menuSelection或printMenu中的呼叫嘗試捕捉是處理這個最有效的方法是什麼?
爲什麼不直接叫'出口(0)'? – Christophe
exit(0)我相信不會展開堆棧,只會調用當前在範圍內的變量的析構函數。因此,將所有其他物體留下不明。這可能是不正確的,因爲我說我對C++相當陌生,但這是我的理解。 –