2011-09-21 101 views
1

我目前正在從名爲'Ivor Hortons Beginning Visual C++ 2010'的書中學習C++。使用getch()來保持命令提示符打開Visual C++ 2010

在我到目前爲止所嘗試的所有例子中,我不得不使用getch()來保持打開命令提示符,並且有時從主方法的結尾刪除返回0語句。

這是一個虛無of windows的Windows 7,它會引起更多的問題嗎?這樣做目前沒有問題,但由於這不包括在書中,我想知道它是否可能是我設置錯誤的東西。

非常感謝:)

+3

錯以什麼方式?另外,如果你點擊CTRL + F5,控制檯會在應用程序終止時自動爲你打開。 – Jon

+0

CTRL + F5不啓動調試器。 – ChrisV

+1

您應該更好地使用cin.get(),因爲getch()不是標準函數,因此不可移植。 – PlasmaHH

回答

1

getch()不特定於操作系統,但它不是直接移植。在C++中執行此操作的首選方法是使用std::cin.get();

main功能可以return 0隱式(你不需要真正擁有該代碼,見下文)。

int main() 
{ 
    // valid, return 0 implied. 
} 

約從main隱含return 0更多詳細信息,請參閱this question

+0

'getch()'甚至不是Windows函數;它是從MS-DOS剩下的。 (在Windows下:在Unix上,它是curses的一部分。) –

+0

足夠公平,已編輯。 – Chad

1

程序結束後,該程序創建的任何資源(包括終端窗口)都將被釋放。通過使用getch可以防止程序結束。這是正常的行爲,應該繼續這種方式,直到Windows是一個遙遠的記憶。

如果您從一個已經存在的命令窗口中啓動該程序,該窗口將關閉而不是,因爲它不是由程序創建的。

+0

控制檯窗口是**不**是程序創建的資源;因爲程序結束,絕對沒有理由關閉它。 –

+0

@詹姆斯,如果沒有現成的程序,代表程序創建控制檯窗口。我不知道Windows是否會執行它,或者如果C++運行時執行它,我不在乎 - 它仍然屬於正在執行的程序。 –

+0

它由Visual Studios創建。如果您從控制檯窗口調用應用程序,則不會創建它。它屬於視覺工作室(Visual Studios確實應該採取措施保持開放)。 –

0

首先,getch()不是標準的C或C++函數。即使在Windows的 下,我認爲它的使用已被廢棄;它的語義返回到CP/M 和早期的MS-DOS。其次,它確實沒有必要,至少不用於控制檯應用程序(並且我不認爲它適用於非控制檯應用程序)。如果您從控制檯窗口運行程序 ,窗口保持打開狀態。如果你是從Visual Studios運行它的 ,那麼在 return語句中設置一個斷點是很簡單的,它會阻止程序並保持窗口打開 (儘管IDE僅僅因爲 而沒有理由關閉它你的程序已經終止)。

+0

當你雙擊程序啓動它時呢?這不符合你所概述的任何一種情況。 –

+0

@Mark Ransom您不要雙擊啓動控制檯應用程序。一旦開發完成,您可以從控制檯調用它們。或者從批處理腳本中獲取,希望以更優雅的方式處理事物。 –

+0

爲什麼不能?它可能不是最佳的,但它工作得很好。 –

相關問題