2012-05-25 62 views
0

我第一次使用Visual C++(對語言也是新手) - 經驗豐富的C#...所以我開始使用Visual Studio創建我的第一個控制檯應用程序。控制檯應用程序怎麼沒有結束?

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int i; 

    cin >> i; 

    return 0; 
} 

控制檯窗口 - 因此應用程序 - 在我按下Enter鍵時沒有關閉?沒有其他輸入 - 只需輸入...

更重要的是,如果我剛打回車,我該如何讓應用程序退出(不想使用exit())?

回答

2

std :: cin等待您的一個非空字符串,然後嘗試將此字符串轉換爲整數。

當您按下Enter std :: cin時,只會獲取一個空字符串並繼續等待某個有效輸入。這是設計。 std :: cin不適用於模擬其他交互。

要在按鍵上終止應用程序,您必須使用操作系統特定的工具來閱讀鍵盤按下。

這是DOS /控制檯Windows上的「conio.h」中的kbhit()函數和POSIX系統上的termio函數。

從源我可以斷定,你使用MSVC++編譯器,所以嘗試通過更換

std::cin >> i 

while(!kbhit()) {} 

不要忘記添加

#include <conio.h> 

記住這是一個Windows特定的解決方案。

+1

+1的額外說明。我也發現我可以編寫'cin.get(c);'並且我可以得到想要的結果。我也會查找''......謝謝! – IAbstract

+0

是的,cin.get(c)讀取任何字符(包括在Enter按鍵上生成的CR/LF),所以這也適用。好點子。 –

相關問題