C#의 GZipStream으로 압축된 String 데이터를 C++ 프로그램에서 다룰 일이 생겼습니다. 이를 위한 라이브러리 검토 중 POCO C++를 사용해 테스트를 진행해보도록 하겠습니다.

 

 

 

1. POCO C++ 다운로드

 

vcpkg를 사용해 라이브러리를 다운로드합니다. vcpkg 설치는 다음 글을 참조해 설치해 주시기 바랍니다: C++ 라이브러리를 위한 vcpkg 설치 방법

 

C++ 라이브러리를 위한 vcpkg 설치 방법

Window 환경에서 C++ 라이브러리를 위한 vcpkg를 설치하는 방법에 대해 알아봅니다. vcpkg 설치. 가장 쉬운 방법은 공식 홈페이지의 안내를 따르는 방법입니다. git을 미리 설치했다면 두줄의 명령줄로

smoh.kr

 

vcpkg가 설치된 폴더로 이동해 다음 명령어로 POCO C++를 다운로드합니다.

 

.\vcpkg install POCO:x64-windows

 

 

잠시 기다리면 다운로드와 빌드가 완료되고 라이브러리를 확인할 수 있습니다.

 

 

 

 

2. 프로젝트 생성

 

간단한 C++ 콘솔 프로젝트를 생성합니다. 이후 다운로드한 라이브러리를 import 합니다.

 

 

 

이제 "Hello World"를 gzip 압축 및 압축 해제하는 코드를 작성합니다.

 

 

 

3. 코드 작성

 

다음과 같이 코드를 작성합니다.

 

#include <iostream>
#include <sstream>
#include <Poco/InflatingStream.h>
#include <Poco/DeflatingStream.h>
#include <Poco/StreamCopier.h>

int main()
{
    std::ostringstream stream1;
    Poco::DeflatingOutputStream
        gzipper(stream1, Poco::DeflatingStreamBuf::STREAM_GZIP);
    gzipper << "Hello World!";
    gzipper.close();
    std::string zipped_string = stream1.str();
    std::cout << "zipped_string: [" << zipped_string << "]\n";

    std::ostringstream stream2;
    Poco::InflatingOutputStream
        gunzipper(stream2, Poco::InflatingStreamBuf::STREAM_GZIP);
    gunzipper << zipped_string;
    gunzipper.close();
    std::string unzipped_string = stream2.str();
    std::cout << "unzipped_string back: [" << unzipped_string << "]\n";
}

 

"Hello World!"를 GZIP 압축 및 압축 해제하는 코드입니다. 콘솔로 실행시키면 다음과 같이 정상 동작하는 것을 확인할 수 있습니다.

 

 

 

 

 

 

반응형

+ Recent posts