ifstream의 eof() 함수 이해
ifstream 클래스의 eof() 함수는 C의 파일 입력 작업에서 중요한 역할을 합니다. 그러나 그 동작은 특히 get() 함수와 관련하여 때때로 혼란스러울 수 있습니다.
제공된 예를 고려하십시오.
#include <iostream> #include <fstream> int main() { std::fstream inf( "ex.txt", std::ios::in ); while( !inf.eof() ) { std::cout << inf.get() << "\n"; } inf.close(); inf.clear(); inf.open( "ex.txt", std::ios::in ); char c; while( inf >> c ) { std::cout << c << "\n"; } return 0; }
입력 파일 "ex.txt"에 다음이 포함된 경우 "abc", 첫 번째 while 루프는 종료되기 전에 4개의 문자를 읽습니다. 이는 eof()가 파일 끝을 지나서 읽으려고 시도한 후에만 EOF 플래그를 설정하기 때문입니다. 첫 번째 루프는 실패한 읽기에 도달할 때까지 문자별로 읽고 EOF 플래그를 설정합니다. 그러나 get()은 EOF 플래그를 고려하지 않고 파일 끝을 나타내기 위해 -1을 반환합니다.
>> 연산자는 올바른 동작을 나타냅니다. >> 연산자는 문자(이 경우 문자열) 읽기를 시도하고 읽기 실패 시 EOF 플래그를 설정합니다. 따라서 "abc"를 읽은 후 루프가 종료됩니다.
혼란 해결
혼란을 피하려면 다음 사항에 유의하는 것이 중요합니다.
읽기 및 EOF 플래그 업데이트를 모두 수행합니다.
따라서 , >>를 사용하여 파일의 끝을 정확하게 감지하려면 eof()보다 get()을 사용하는 것이 좋습니다.
위 내용은 C의 `ifstream::eof()` 함수는 `get()` 및 추출 연산자와 실제로 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!