Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 파일 크기 구하는 방법: seekg()와 tellg() 활용하기

C++에서 파일의 크기를 확인하려면 먼저 파일을 연 뒤, 읽기 위치를 파일의 맨 끝으로 이동시킵니다. 이때 tellg() 함수를 호출하면 스트림의 현재 위치가 반환되는데, 이 값이 곧 파일 전체의 바이트 수입니다.

핵심 원리는 간단합니다. seekg(0, ios::end)로 커서를 파일 끝으로 옮긴 후 tellg()가 가리키는 위치 값을 얻으면, 그것이 바로 파일의 크기입니다.

예제 코드

#include<iostream>
#include<fstream>
using namespace std;
int main() {
    ifstream in_file("a.txt", ios::binary);
    in_file.seekg(0, ios::end);   // 커서를 파일 끝으로 이동
    int file_size = in_file.tellg(); // 현재 위치 = 파일 크기(바이트)
    cout << "Size of the file is" << " " << file_size << " " << "bytes";
}

실행 결과

Size of the file is 44 bytes

참고 사항

  • 파일은 반드시 ios::binary 모드로 여는 것이 좋습니다. 텍스트 모드에서는 개행 문자 변환 등으로 인해 실제 크기와 다른 값이 나올 수 있습니다.
  • 더 큰 파일을 다룰 때는 int 대신 오버플로우 위험이 없는 streamposlong long 타입을 사용하는 것이 안전합니다.

또한 C++17부터는 <filesystem> 헤더의 std::filesystem::file_size("a.txt")를 사용하면 위 과정 없이 한 줄로 파일 크기를 얻을 수 있으므로, 최신 표준을 지원하는 환경이라면 이 방법도 고려해 보세요.