4

假设我在 Windows 平台上有一个扩展名为 .doc 的文件,如何使用 C++ 中的 ofstream 对象打开该文件以在屏幕上输出其内容?我知道该对象可用于以文本和二进制模式打开文件。但我想知道是否可以打开 .doc(甚至 .pdf)文件并读取其内容。

4

2 回答 2

2

我以前从未真正这样做过,但在阅读之后,我想我可能会有一个建议。.docx 格式实际上只是压缩的 XML。解压后,文件位于 word/document.xml。在程序中执行此操作很有趣。

两种选择:如果您使用的是 C++ CLR (.NET),那么Microsoft 为您提供了一个 SDK。它应该可以很容易地打开 Office 文档。

否则,如果您只是使用常规 C++,您可能需要做一些额外的工作。

  1. 打开文件并使用zlib之类的库将其解压缩
  2. 找到里面的document.xml文件
  3. 解析 XML 文档。您可能需要为此使用某种 XML 解析库。您必须查看 XML 的规范以了解如何获取所需的文本。
于 2012-11-17T18:05:42.310 回答
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 ) 在某种程度上很有用。

于 2012-11-17T17:27:42.237 回答