我正在研究一種算法,並且我被要求在沒有更多輸入到程序時打印「退出」。如何在C++中沒有更多std輸入時完成我的程序?
我使用
char c;
while(c = getchar()){...}
,因爲我需要尋找'\n'
字符和數字。
因此,我複製示例輸入並將其粘貼到我的程序中以進行測試,但它一直在等待另一個輸入,因此當我提交它時,我的時間限制超出。
PS:我不能使用多線程。
我正在研究一種算法,並且我被要求在沒有更多輸入到程序時打印「退出」。如何在C++中沒有更多std輸入時完成我的程序?
我使用
char c;
while(c = getchar()){...}
,因爲我需要尋找'\n'
字符和數字。
因此,我複製示例輸入並將其粘貼到我的程序中以進行測試,但它一直在等待另一個輸入,因此當我提交它時,我的時間限制超出。
PS:我不能使用多線程。
您可以停止時返回getchar()
EOF
,像這樣:
int c;
while ((c = getchar()) != EOF) {...}
注意c
需要被宣佈爲int
,而不是char
。
使你的程序更加C++ - 樣,利用運營商>>
代替getchar
在一個循環中,像這樣:
char c;
while (cin >> c) {...}
我使用getchar(),因爲使用cin它不會檢測到額外的'\ n' – Carlos
@Carlos我看到。然後'cin.get(c)'從[這個答案](http://stackoverflow.com/a/7679402/335858)更好。 – dasblinkenlight
getchar()
返回一個int,而不是一個字符。 特別是,它在文件結尾處返回EOF,EOF通常爲-1。所以如果你把它存儲在char中,它永遠不會與EOF相等。
int c;
while ((c = getchar()) != EOF) {
您是否正在從文件閱讀?如果是這樣,getchar()
將返回EOF:http://www.cplusplus.com/reference/cstdio/getchar/
所以
int c=getchar();
while (c != EOF) {...}
應該工作。
你在正確的軌道上,但是這段代碼不會改變'c'的值。你需要在循環體結束之前添加'c = getchar();'或者將'while'語句改爲'while((c = getchar())!= EOF)''。 –
謝謝你。我只是假設他會在循環結束時更新變量,但記住這種事情總是很好的。 –
你怎麼知道是否有更多的輸入?如果你再等一秒鐘,我可能會考慮按另一個鍵。 –