[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
Reference
この問題について([C++]判断EOF), 我々は、より多くの情報をここで見つけました https://velog.io/@c-jeongyyun/CPP-EOF-판단하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol