tellg() 파일 크기 추정 시 잘못된 해석
C의 Tellg() 함수는 특정 데이터를 나타내는 토큰 값을 반환하도록 설계되었습니다. 파일 내의 위치. 이 값은 나중에 seekg() 함수를 사용하여 해당 위치로 다시 이동하는 데 사용될 수 있습니다. 그러나 Tellg()는 파일 크기를 바이트 단위로 직접 제공하지 않는다는 점에 유의하는 것이 중요합니다.
제공된 코드에서:
void read_file(const char* name, int *size, char*& buffer) { ifstream file; file.open(name, ios::in | ios::binary); *size = 0; if (file.is_open()) { // Get length of file file.seekg(0, std::ios_base::end); int length = *size = file.tellg(); file.seekg(0, std::ios_base::beg); // Allocate buffer in size of file buffer = new char[length]; // Read file.read(buffer, length); cout << file.gcount() << endl; } file.close(); }
file.tellg()에 대한 호출 파일의 크기를 추정하는 데 사용됩니다. 그러나 Tellg()는 파일 크기를 직접 반환하지 않으므로 이 접근 방식은 올바르지 않습니다.
파일 크기를 결정하는 올바른 접근 방식
파일 크기를 정확하게 결정하려면 바이트 단위의 경우 다음 접근 방식을 사용하는 것이 좋습니다.
#include <limits> file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); file.clear(); // Since ignore will have set eof. file.seekg(0, std::ios_base::beg);
이 코드는 파일을 끝까지 읽고, gcount() 함수는 읽은 바이트 수를 반환합니다. 이 값은 파일의 실제 크기를 나타냅니다.
추가 참고 사항
위 내용은 C의 `tellg()` 함수를 사용하여 파일 크기를 어떻게 정확하게 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!