[C++]判断EOF



EOFとは?


EOFはend-of-fileの略で、ファイルの末尾に達したことを示す定数です.

EOFの決定方法


C++でcinです.eof()を使用して、ファイルの末尾に到達したかどうかを判断します.ファイルの末尾が正しい場合は、trueまたはfalseを返します.

いつ販売を中止しますか?


最後の文字を読んでからもう一度読むとEOFだと思います.
例えば、入力としてjeongという文字列を仮定し、1つずつ読み出す.jeongは5文字からなる文字列で、5回読み込むことができます.
char c;
for(int i=0;i<5;i++)
	cin >> c;
次にcin.eof()が実行される場合、trueに戻りますか、それともfalseに戻りますか.
答えはfalseです.
以前、最後の文字を読んでから読んでみるとEOFと考えられていました.現在のコードについては、最後の文字まで読んだ後、二度と読んだことがありません.
上記の例でcin.eof()trueの値にするには、次の変更が必要です.
char c;
for(int i=0;i<5;i++)
	cin >> c;
cin >> c // 한번 더 읽어주기!
cout << cin.eof();
このように入力値を読み返してから、EOFと判断します.

入力値の長さが分からない場合?


前の例では、入力値の長さがわかります.実際、入力値の長さが分からない場合は、通常「ファイルの末尾に出力~」となります.この場合、以下のコードを使用できます.
char a;

while(!(cin >> a).eof){  // 이렇게! 
	cout << a;
}
最後の値を読んだ後、もう一度読むので、EOFで1回読んで、cin >> a.eof()と判断します.

TIP


上記のコードは、以下に示すように、より簡潔に変更できます.
char a;

while(cin >> a){ // 간결하게!
	cout << a;
}
どうしてこんなことができるの?
元のストリーム演算の後、ストリームオブジェクトを返します.→そのためEOFなどの演算が可能!
ただし、ストリームが条件文に入ると、ストリームオブジェクトではなく(cin >> a).eof()が返されます.
ストリームが正常であればbool타입、異常であればtrue、すなわちEOFに戻る.
従って、これらの原理は、上記のように簡潔に表すことができる.

の最後の部分


eofの内容を直接適用したい場合は、白駿#10951題を試してみてください.白駿#10951の答えが気になるならここです。を選びましょう!
注意:https://st-lab.tistory.com/257