這是我的代碼,因爲它是目前。這段代碼咳嗽了cin.get()的錯誤。我明白這不是好的代碼,它從來不應該是,我只是在測試一些cin的東西。C++ cin.get(),cin.peek()暫停,與stdio相同
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
char c[1000];
cin.setstate(cin.eofbit);
cout << cin.good() << endl;
cout << cin.eof() <<endl;
cout << cin.get() << endl;
cin.putback('c');
cout << cin.get() << endl;
cout << "Do we ever reach this?" << endl;
while(1){
};
return 0;
}
無論如何。我的問題是cin.get(),cin.peek(),cin.ignore(),getchar(),或幾乎任何cin或stdio函數,你可以命名暫停執行我的程序時,流是空的,沒有設置EOF位或任何東西。這對我來說很刺激,因爲我想檢查流中是否有任何東西,所以我可以清除它,因爲ignore()總是暫停。
我可以工作的唯一方法是'istream :: readsome'。我已經加載到一個字符數組,並使用cout打印它。它打印出一串我不認識的符號(每一個符號都是個別符號)。
http://gyazo.com/e3ee65cdad7ed5cc7b2ce2307ca58c90
強制轉換爲整數,這些出來爲-52,這並不等同於ASCII或Unicode的任何東西。
我使用Visual C++速成2010
請幫忙編譯,我完全在這一點難倒。我只是想讀取字符/沖洗我的流,沒有暫停,如果沒有。我花了3個小時試圖解決這個問題。嘆。
'sync()'丟棄緩衝區中剩下的任何東西,但這種行爲不能保證。 – chris
謝謝,我會看看它。但是,有沒有保證的方法,或者一種方法來防止可怕的暫停,如果我做cin.ignore或cin.peek? – user1819357
沒什麼我知道的,對不起。 – chris