Windows 플랫폼에서 .doc 확장자를 가진 파일이 있다고 가정 할 때 C++에서 ofstream 객체를 사용하여 화면에 내용을 출력하기 위해 파일을 열려면 어떻게해야합니까? 텍스트 및 이진 모드로 파일을 여는 데이 개체를 사용할 수 있다는 것을 알고 있습니다. 그러나 .doc 파일 (또는 .pdf 파일)을 열 수 있는지, 그 내용을 읽을 수 있는지 알고 싶습니다.C 라이브러리에서 ofstream을 사용하여 기존 .doc 파일 열기
3
A
답변
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++ 만 사용하는 경우 추가 작업을해야 할 수도 있습니다.
- 열고 파일을하고는 XML 문서를 구문 분석
- 내부의 document.xml 파일을 찾습니다 zlib
- 같은 라이브러리를 사용하여 압축을 풉니 다. 아마도 이런 종류의 XML 파싱 라이브러리를 사용하고 싶을 것이다. 원하는 텍스트를 가져 오는 방법을 알아 내기 위해 XML 사양을 찾아야합니다.
물론, 열어서 읽을 수 있습니다. 하지만 아마도'doc' 파일을 파싱하는데 관심이 있습니까? 비트를 읽을 수 있지만, 프로그래머는 비트를 이해해야합니다 (또는 비트를 이해할 라이브러리를 사용하십시오). – Cornstalks
우선,'ofstream'이 아닌'ifstream'을 사용해야 할 것입니다 ... – ybungalobill
바이너리 파일을 stdout으로 출력하려면 NULL 값을 저장할 수 있으므로 base64로 변환해야합니다. 그러면 출력 된 문자열이 종료됩니다. –