2017-02-18 34 views
0

我正在研究一種算法,並且我被要求在沒有更多輸入到程序時打印「退出」。如何在C++中沒有更多std輸入時完成我的程序?

我使用

char c; 
while(c = getchar()){...} 

,因爲我需要尋找'\n'字符和數字。

因此,我複製示例輸入並將其粘貼到我的程序中以進行測試,但它一直在等待另一個輸入,因此當我提交它時,我的時間限制超出

PS:我不能使用多線程。

+0

你怎麼知道是否有更多的輸入?如果你再等一秒鐘,我可能會考慮按另一個鍵。 –

回答

3

您可以停止時返回getchar()EOF,像這樣:

int c; 
while ((c = getchar()) != EOF) {...} 

注意c需要被宣佈爲int,而不是char

使你的程序更加C++ - 樣,利用運營商>>代替getchar在一個循環中,像這樣:

char c; 
while (cin >> c) {...} 
+1

我使用getchar(),因爲使用cin它不會檢測到額外的'\ n' – Carlos

+0

@Carlos我看到。然後'cin.get(c)'從[這個答案](http://stackoverflow.com/a/7679402/335858)更好。 – dasblinkenlight

0

getchar()返回一個int,而不是一個字符。 特別是,它在文件結尾處返回EOF,EOF通常爲-1。所以如果你把它存儲在char中,它永遠不會與EOF相等。

int c; 
while ((c = getchar()) != EOF) { 
0

您是否正在從文件閱讀?如果是這樣,getchar()將返回EOF:http://www.cplusplus.com/reference/cstdio/getchar/

所以

int c=getchar(); 
    while (c != EOF) {...} 

應該工作。

+1

你在正確的軌道上,但是這段代碼不會改變'c'的值。你需要在循環體結束之前添加'c = getchar();'或者將'while'語句改爲'while((c = getchar())!= EOF)''。 –

+0

謝謝你。我只是假設他會在循環結束時更新變量,但記住這種事情總是很好的。 –

相關問題