2011-11-13 57 views

回答

2

我假設你在Windows上。

這可以變成一個長時間的辯論,但一般有兩種主要的方法的人做到這一點:

  1. 推薦)添加cin.get();到程序的結束。這將導致您的程序停止,直到用戶點擊輸入,然後它將繼續並退出。

    • 這將適用於Windows和Linux。
  2. 在程序結束時添加system("PAUSE");。這將導致您的程序打印Press any key to continue. . .之類的內容,當您點擊某個鍵時,該程序將繼續並退出。

    • 有一個機會,PAUSE命令不這樣做,可以訂購比薩餅,發射導彈,或別的東西。

    • 這隻適用於Windows,但無論如何你都不需要它。

+4

3.從命令行 –

+0

運行應用程序在int main()或所有代碼之後? – Stian

+0

@StianOlsen裏面的所有其他代碼在'int main'裏面。 –

1
std::cout << "Press enter to exit" << std::endl; 
cin.get(); 
exit(1); 
+0

是的,我試圖記住這種行爲 - 這些天我不會從'stdin'做很多輸入。我忘記了終端會緩衝,直到命中「返回」。 –

0

如果你想,直到用戶按下一個鍵暫停你的程序,你可以使用cin.get()。但實際上,程序應該在完成時終止。否則,它在流水線等方面是無用的。

如果您的程序窗口在完成時消失,那麼您啓動它的方式會出錯。當程序完成時,窗口是否停留在啓動程序並設置窗口,而不是程序的地方。此問題通常是由GUI啓動CLI程序引起的。如果你想從GUI啓動,寫一個GUI程序。否則,從終端啓動終端程序。

不要使用system("pause");。它使你的程序不可移植。如果你曾經在一個系統上運行它,而這個系統的命令不是你想要的,你可能會有一個非常生氣的用戶。

不要使用getch。這是Windows控制檯功能和Curses功能。它不是C++的一部分。 (除非您專門爲具有此功能的平臺進行開發,並且您確信它可以實現您想要的功能。但是這個函數會讓你的程序不能移植成爲一個非常愚蠢的理由。)

+0

該程序正在從用戶獲取數據,我計算它的結果,我希望用戶看到結果,但應用程序在輸入後退出immeditaly並單擊輸入,它只顯示0.3秒的結果並退出。我怎樣才能防止在Windows上? – Stian

+0

@StianOlsen從終端或命令行啓動程序,而不是從GUI啓動程序。如果程序必須*交互式,你可以使用'cin.get()'。 (例如,如果它有菜單並且沒有選項來禁用它們,或者它將提示和輸出混合在一起)。 –

相關問題