>백엔드 개발 >C++ >C에서 파일의 모든 바이트를 문자 배열로 효율적으로 읽는 방법은 무엇입니까?

C에서 파일의 모든 바이트를 문자 배열로 효율적으로 읽는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 02:16:30630검색

How to Efficiently Read All Bytes from a File into a Character Array in C  ?

C에서 파일의 모든 바이트를 문자 배열로 검색하는 방법

"C:MyFile.csv"에 있는 파일과 다음의 문자 배열 버퍼가 제공됩니다. 크기가 10,000인 경우 파일의 모든 바이트를 버퍼로 어떻게 효율적으로 읽을 수 있습니까?

이 시나리오에서는 getline()을 사용하는 것보다 일반적으로 선호되는 다음 접근 방식을 고려하십시오.

<code class="cpp">// Open the file in binary mode to preserve byte-by-byte fidelity
std::ifstream infile("C:\MyFile.csv", std::ios_base::binary);

// Determine the file's size
infile.seekg(0, std::ios::end);
size_t file_size = infile.tellg();
infile.seekg(0, std::ios::beg);

// Ensure that the buffer is of sufficient size
if (file_size > sizeof(buffer)) {
    // Handle the case where the file exceeds the buffer's capacity
}

// Read the entire file's contents into the buffer
infile.read(buffer, file_size);

// Obtain the actual number of bytes read from the file
std::streamsize bytes_read = infile.gcount();</code>

추가 참고 사항:

  • seekg() 및 Tellg()를 사용하여 파일 크기를 결정하는 것은 일반적으로 신뢰할 수 있지만 보장되지 않으므로 추가 오류 처리를 고려하세요.
  • 파일이 바이너리가 아닌 모드에서 열리면 일부 문자 변환이 발생할 수 있으며 이로 인해 잠재적으로 file_size가 버퍼에 최종적으로 저장된 바이트 수와 다를 수 있습니다.
  • 더 큰 파일의 경우 또는 크기 조정 가능한 버퍼를 선호하는 경우 , 보다 효율적인 파일 읽기를 위해 std::Vector 및 std::istreambuf_iterator 사용을 고려해보세요.

위 내용은 C에서 파일의 모든 바이트를 문자 배열로 효율적으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.