2012-11-17 2 views
3

Windows 플랫폼에서 .doc 확장자를 가진 파일이 있다고 가정 할 때 C++에서 ofstream 객체를 사용하여 화면에 내용을 출력하기 위해 파일을 열려면 어떻게해야합니까? 텍스트 및 이진 모드로 파일을 여는 데이 개체를 사용할 수 있다는 것을 알고 있습니다. 그러나 .doc 파일 (또는 .pdf 파일)을 열 수 있는지, 그 내용을 읽을 수 있는지 알고 싶습니다.C 라이브러리에서 ofstream을 사용하여 기존 .doc 파일 열기

+2

물론, 열어서 읽을 수 있습니다. 하지만 아마도'doc' 파일을 파싱하는데 관심이 있습니까? 비트를 읽을 수 있지만, 프로그래머는 비트를 이해해야합니다 (또는 비트를 이해할 라이브러리를 사용하십시오). – Cornstalks

+1

우선,'ofstream'이 아닌'ifstream'을 사용해야 할 것입니다 ... – ybungalobill

+0

바이너리 파일을 stdout으로 출력하려면 NULL 값을 저장할 수 있으므로 base64로 변환해야합니다. 그러면 출력 된 문자열이 종료됩니다. –

답변

1

C++ 표준 라이브러리에는 간단한 텍스트 파일을 읽거나 이진 파일을 읽는 데 사용할 수있는 ifstream 클래스가 있습니다.

파일에서이 바이트를 해석해야합니다. 바이너리 파일을 올바르게 해석하려면 파일의 형식을 알아야합니다.

MS Word 파일을 생각하면 여기에서 시작합니다 : http://en.wikipedia.org/wiki/Office_Open_XML MS Word 2007 형식을 이해합니다.

직접 필터를 만들고 싶다면 Boost Iostreams 라이브러리 (http://www.boost.org/doc/libs/1_52_0/libs/iostreams/doc/home.html)가 유용 할 것입니다.

1

나는 이것을 실제로 해 본 적이 없지만, 그것을 읽은 후에 나는 제안을 할 수 있다고 생각한다. .docx 형식은 실제로 압축 된 XML입니다. 압축을 풀면 파일은 word/document.xml에 있습니다. 프로그램에서 이것을하는 것이 재미를 얻는 곳입니다.

두 가지 옵션 : C++ CLR (.NET)을 사용하는 경우 Microsoft has an SDK for you. Office 문서를 쉽게 열 수 있습니다.

그렇지 않으면 일반 C++ 만 사용하는 경우 추가 작업을해야 할 수도 있습니다.

  1. 열고 파일을하고는 XML 문서를 구문 분석
  2. 내부의 document.xml 파일을 찾습니다 zlib
  3. 같은 라이브러리를 사용하여 압축을 풉니 다. 아마도 이런 종류의 XML 파싱 라이브러리를 사용하고 싶을 것이다. 원하는 텍스트를 가져 오는 방법을 알아 내기 위해 XML 사양을 찾아야합니다.