>백엔드 개발 >C++ >C에서 바이너리 파일을 효율적으로 복사하거나 수정하려면 어떻게 해야 합니까?

C에서 바이너리 파일을 효율적으로 복사하거나 수정하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-29 03:41:14624검색

How Can I Efficiently Copy or Modify Binary Files in C  ?

바이너리 파일 입력/출력

C에서 바이너리 파일을 읽고 쓰는 작업에는 바이너리 데이터를 처리하기 위한 특정 파일 입력/출력 메커니즘을 사용하는 작업이 포함됩니다. 제공된 코드가 이를 달성하려고 시도하는 동안 출력 버퍼가 파일 내용의 제한된 부분만 캡처하는 문제에 직면합니다.

C 솔루션:

보다 효율적이고 C 호환 접근 방식을 사용하려면 다음 코드 조각을 사용하는 것이 좋습니다.

#include <fstream>
#include <iterator>
#include <algorithm>

int main() {
    std::ifstream input("C:\Final.gif", std::ios::binary);
    std::ofstream output("C:\myfile.gif", std::ios::binary);

    std::copy(
        std::istreambuf_iterator<char>(input),
        std::istreambuf_iterator<char>(),
        std::ostreambuf_iterator<char>(output)
    );
}

이 수정된 코드에서 std::copy 함수는 바이너리 파일의 내용을 입력 스트림 입력에서 출력 스트림 출력으로 효율적으로 전송하는 데 사용됩니다. 이 접근 방식을 사용하면 Final.gif의 전체 콘텐츠가 myfile.gif에 정확하게 복사됩니다.

대체 버퍼링 솔루션:

파일의 데이터에 액세스해야 하는 경우 수정을 위해 버퍼를 사용하려면 다음 코드를 활용할 수 있습니다.

#include <fstream>
#include <iterator>
#include <vector>

int main() {
    std::ifstream input("C:\Final.gif", std::ios::binary);

    // Copies entire file into a buffer
    std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {});
}

여기서 입력 파일의 전체 내용을 읽어 들입니다. 잠재적인 출력 작업 전에 바이너리 데이터를 수정할 수 있는 벡터 버퍼 버퍼입니다.

위 내용은 C에서 바이너리 파일을 효율적으로 복사하거나 수정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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