2012-09-01 53 views
1

可能重複:
How to stop C++ console application from exiting immediately?C++。計劃selfkills當我運行它

我就℃的新手++。接下來的教程,我的程序完成執行簡單的命令(比如cout ans stuff)時會自動完成。我發現了避免這種情況的get.cin()函數。然而,任何時候我使用'cin'命令來插入變量,程序在接收到輸入並執行工作之後就會自殺。有沒有辦法避免這種情況?非常感謝!

+1

而不是退出,你想要/期望它做什麼? – RobertMaysJr

+3

如果您爲控制檯編寫程序,然後在控制檯中運行它。 – jrok

+1

它不會自殺,它可能剛剛達到其代碼的末尾。如果您希望窗口保持打開狀態,只需在最後詢問另一個輸入即可。這是最便攜的方式。 – Tibor

回答

1

即使您使用std::cin.get(),程序接收輸入時退出的原因是因爲每當cin讀取輸入時,都有可能丟失一些垃圾;當你打電話給std::cin.get()時,你會得到那個垃圾。

你必須做的是清除cin任何不受歡迎的數據,這樣std::cin.get()沒有什麼可讀的,並且需要等待新的輸入。

... 
std::cin.clear(); 
std::cin.get(); 
return 0; 
1

程序不會「自殺」。只要完成了它應該完成的所有工作(即從main返回時),就會退出

您需要設置您的工作環境,以便您可以看到程序的輸出。例如,如果你在Windows中,你可以打開自己的命令行(運行cmd)並從那裏運行你的程序;或者指示您的IDE在程序退出後不要關閉終端窗口。

0

在某些窗口系統中,當您的程序執行時會創建一個控制檯窗口。當你的程序結束時,這個控制檯窗口消失。

我總是建議 「暫停」 模式新手:

cout << "Paused. Press ENTER to continue.\n"); 
cin.ignore(10000, '\n'); // Ignore until 100000 characters are entered or a newline is entered. 

有時候,我使之成爲一個功能是:

void Pause(void) 
{ 
    cout << "Paused. Press ENTER to continue.\n"); 
    cin.ignore(10000, '\n'); // Ignore until 100000 characters are entered or a newline is entered. 
} 

希望這有助於

0

std::cin.get()工作良好,它的使用非常簡單,但它希望用戶按回車。 我用用ESC結束我的節目,所以不會爲我工作,所以我用這個

#ifdef _WIN32 
std::system("pause"); 
#else 
std::system("read -n1 -r -p \"Press any key to continue...\""); 
#endif 

這將打印「按任意鍵繼續......」,並繼續按任意鍵執行所以我可以用我的可愛ESC

1

你的程序在執行後不會自行終止,它只是結束它。

簡單的例子:

#include <iostream> 
int main(int argc, const char* argv[]) 
{ 
    std::cout << "Hello, World" << std::endl; 
    return 0; // End of execution 
} 

在那個例子中的一個小窗口打開,然後關閉速度非常快,因爲代碼的邏輯是這麼說的,但是在下面的例子:

#include <iostream> 
int main(int argc, const char* argv[]) 
{ 
    std::cout <<"Hello, World!" << std::endl; 
    std::cin.get(); 
    return 0; 
} 

你的應用程序仍然顯示在屏幕上,直到你按回車鍵'返回鍵'然後它將退出。

如果您正在使用的Windows操作系統,考慮下面的例子:

#include <iostream> 
int main(int argc, const char* argv[]) 
{ 
    std::cout << "Hello, World!" << std::endl; 
    system("PAUSE"); 
    return 0; 
} 

請注意,system("PAUSE")是僅適用於Windows並不會在其他操作系統上運行。

還有一個值得一提的事,也有很多方法來使用其他這些,但我寫的最常見的原因。