これは現在の私のコードです。このコードは、cin.get() でエラーを発生させます。私はそれが良いコードではないことを理解しています.それは決して良いコードではありませんでした.私は単にいくつかのcinのものをテストしていました.
#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」です。これを char 配列にロードし、cout を使用して出力しました。認識できない記号の長い文字列が出力されます (これらはそれぞれ個別の記号です)。
http://gyazo.com/e3ee65cdad7ed5cc7b2ce2307ca58c90
整数にキャストすると、これらは -52 として出力されます。これは、ASCII または Unicode のいずれにも相当しません。
Visual C++ Express 2010 を使用してコンパイルしています。
助けてください、私はこの時点で完全に困惑しています。何もない場合は一時停止せずに、単に文字を読み取り/ストリームをフラッシュしたいだけです。これを解決するのに3時間も費やしました。はぁ。