바이너리 파일 입력/출력
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!