2011-12-18 68 views
0

哪個命令讓我通過提示輸入來關閉我的新隨機數字?我試圖寫系統(「暫停」),但隨後出現「按任意鍵繼續」,我不喜歡。有沒有可能只需按下輸入按鈕並一個接一個看數字?如何在按回車後使用cout打印文本?

下面是程序代碼:

#include <iostream> 
using namespace std; 
#include <stdlib.h> 
#include <ctime> 

int main() 
{ 
    int i, k; 

    srand(time(0)); 
    for (i = 0; i < 20; i++) 
    { 
     cout << (rand() % 8) << endl; 
    } 
} 
+1

這是功課,對吧? :-) –

+0

嘗試cin.readline(),或者如果你不需要聽取具體的輸入然後cin.readchar()。 –

+0

nope :)真的,我不知道該怎麼做.. –

回答

0

您可以簡單地使用getchar()這將讀取一個按鍵,然後繼續。如果你想專門打破輸入密鑰,請使用類似while (getchar() != "\n");

+0

不要使用getch。它是非標準的。使用getchar。 – Lalaland

+0

它應該是'\ n'。 –

+0

getch是Borland C(也可能是MSVC)擴展到標準C通過conio庫。它不是標準的一部分,在大多數編譯器(包括gcc)中肯定不可用(默認情況下) – LeleDumbo

0

add cin >> SomeVariableThatCouldAcceptAnythingInCaseYouPressSomethingElseBeforeTheEnterKeycout之前或之後,無論你喜歡什麼。

0

只讀一個字符串,對不對?

#include <string> 
.... 


for (i=0;i<20;i++) 
{ 
    std::string str; 
    cin >> str; // this should pause until the user presses enter 
    cout << (rand()%8) << endl; 

}; 
+0

我認爲這樣會等到你真的至少放了一個非空白字符,不是嗎? –

0

那簡單的cin.get()怎麼樣?不需要任何臨時變量或任何C函數。

1
#include <limits> 

// ... 

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 

超過讀取單個字符的優點是,這將確保沒有雜散字符留在緩衝區中。

1

這裏有一個稍微更現代C++對其採取:

#include <iostream> 
#include <ctime> 
#include <random> 

int main() 
{ 
    std::mt19937 rng(std::time(0)); 
    std::uniform_int_distribution<int> gen(0,7); 

    for (int i=0;i<20;i++) 
    { 
     std::cout << gen(rng); 

     std::string line; 
     std::getline(std::cin, line); 
    }; 
} 
+0

@KerrekSB g ++仍然像寶寶一樣吃東西,這就是爲什麼我不忘記而不注意。 – sehe