2009-08-04 5 views
1

.docx의 일반 텍스트를 읽을 C++ 프로그램을 만들고 있습니다. 내 공격 계획은 .docx의 이름을 .zip으로 변경 한 다음 압축을 풀는 것입니다. 그런 다음 문서의 텍스트가 들어있는 .xml 파일의 이름을 .txt로 바꾸고 구문 분석합니다.C++에서 디렉토리 압축 해제

바로 지금 나는 충분히 쉬운 이름 바꾸기를 알아 냈습니다. 나는 지금 압축을 풀기에 고투하고있다. 저는 C++에 매우 능숙합니다. 그러나 이것은 처음으로 실제 응용 프로그램으로 확장하고 STL 라이브러리를 넘어서 사용했습니다.

처음에는 zlib 라이브러리에서 C++에 대한 많은 래퍼를 시도했지만 제대로 컴파일되거나 작동하지 못했습니다 (Cygwin에있는 환경 때문일 수 있습니다). 이런 이유로 그것은 지저분한 zlib 코드를 사용하여 기본값으로 설정해야합니다. 하지만 모든 문서와 예제에서 볼 수 있듯이 zlib는 여러 파일이 아닌 하나의 파일을 압축하는 .zip 파일을 읽는 데 사용됩니다. 이제는 여기에서 어디로 가야할지 모릅니다. 이전에 말씀 드렸듯이, STL 이외의 도메인에 완전히 새로운 것이므로 나는 매우 분실했다고 느낍니다.

도움이나 도움을 많이 받으실 수 있습니다!

감사합니다, 마이클

+2

파일의 이름을 변경할 필요가 없습니다. 프로그램의 압축 해제 기능에 docx 파일을주고 싶다면 아무 것도 멈추지 않습니다. –

+0

아, 그래. 나는 무엇이 일어날 지 확신하지 못했기 때문에 이름 바꾸기를하기 만하면 안전하다고 생각했습니다. 그것을 지워 줘서 고마워. – mcFreid

+0

실제 단어 응용 프로그램입니까? 펀이 의도 한거야? –

답변

1

ZLIB가 gzip 압축을위한이 아니라 ZIP 압축 (see here for details).

결과적으로 Cygwin에서 제공되는 unzip 유틸리티로 쉘 아웃하고 lots of platforms에서 사용할 수 있습니다.

+0

첫 번째 질문의 의미가 확실하지 않습니다. 그게 당신의 암시라면 C 코드를 사용할 수 있습니다. Cygwin에서 "unzip"실행 파일을 사용하는 방법에 대해 좀 더 자세히 설명해 주시겠습니까? (그렇게하지 않으면 코드를 이식 할 수있는 편이 낫지 만). 또한 zlib에서 zip과 gzip 압축/압축을 모두 수행 할 수 있습니다. – mcFreid

+0

첫 번째 질문을 지우고 zlib이 zip 압축을 처리 할 수 ​​없음을 보여주는 링크를 추가했습니다. zlib과 함께 제공되는 minizip 라이브러리를 사용해야합니다. –

+0

마이크, 링크를 제공해 주셔서 감사합니다. 나는 네가 의미하는 것을 잘못 읽었다. 나는 당신이 .zip 파일이 아니라 zip 아카이브/디렉토리에 대해 이야기하고 있다고 생각했습니다. 나는 또한 정보 - 우편을 시도하고 cygwin에서 컴파일하는 데 문제가있었습니다. 나중에 내가 집에있을 때 내가받는 오류를 게시 할 것이다. – mcFreid

1

zlib이 다중 파일 zip을 직접 지원할 것이라고 생각하지 않습니다 (잘못되었을 수 있음). 대체물을 찾으려고 할 수 있습니다. cygwin에서 제공하는 POSIX/UNIX 호환성이 정말로 필요한 경우가 아니면, cygwin에서 MinGW으로 전환하는 것을 고려할 수도 있습니다.

+0

"다중 파일"압축으로 여러 파일을 포함하는 zip 파일을 의미하는 경우 minizip이 있습니다. minibip이 zlib와 어떻게 관련되어 있는지 명확하게 밝히지는 않았습니다 (zlib가 필요하다는 점을 제외하고). http://www.winimage.com/zLibDll/minizip.html을 참조하십시오. –

+0

저는 minzip을 설치하는 방법에 대해 다소 혼란 스럽습니다. 링크 된 사이트에서 zlib가 제공되는 것 같지만 보이지 않습니다. 여기서 C++로 추가 라이브러리를 사용하는 것에 익숙하다는 것을 기억하십시오. – mcFreid

1

저는 비슷한 문제를 다루었지만 실제로는 아직 큰 해결책이 없습니다.

zlib은 현재 여러 파일을 지원하지 않습니다.

참조 : C/C++ Packing and Compression

+0

참고해 주셔서 감사합니다. 나는 당신의 질문에서 http://nih.at/libzip/index.html을 보았고 그것이 내 대답을 제공 할 것 같다. 가능한 빨리 시도해 보겠습니다. – mcFreid