2010-12-03 88 views
20

在C#中,您可以使控制檯等待輸入字符(這對於在程序退出前能夠看到控制檯的最後輸出很有用)。作爲C++的初學者,我不確定什麼是等價的。有一個嗎?控制檯在C++中暫停?

+0

Windows還是Linux? – 2010-12-03 08:44:08

+2

Duplicate:http://stackoverflow.com/questions/1173208/what-is-the-best-practice-for-combating-the-console-closing-issue – 2010-12-03 08:47:04

+0

@Stefan:windows。 – RCIX 2010-12-03 08:47:55

回答

3

標準中沒有什麼東西,也沒有什麼跨平臺的。通常的方法是等待< Enter>被按下,然後放棄結果。

29

最簡單的方法就是:

std::cin.get(); 

可以打印類似「按任意鍵繼續......」在那之前。有人會告訴你關於

system("pause"); 

但是不要使用它。它不是便攜式的。

5
#include <stdio.h> 
// ... 
getchar(); 

該函數等待一個按鍵並返回其整數值。

例如,我有不一樣System("pause")的函數,但它不要求「pause.exe」(這是一個潛在的安全整體,順便說一句):

void pause() 
{ 
    std::cout << std::endl << "Press any key to continue..."; 
    getchar(); 
} 
0

不正確的解決方案將是使用system("pause"),因爲這會造成安全漏洞(目錄中的惡意pause.exe!)並且不是跨平臺的(暫停只存在於Windows/DOS上)。

有一個簡單的解決方案:

void myPause() { 
    printf("Press any key to continue . . ."); 
    getchar(); 
} 

這使用getchar(),這是符合POSIX標準(見this)。 您可以使用此功能是這樣的:

int main() { 
    ... 
    myPause(); 
} 

這有效地防止控制檯從閃動,然後退出。