2012-11-17 80 views
3

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

+2

当然,他们可以打开和阅读。但也许你有兴趣解析一个'doc'文件?您可以阅读这些位,但程序员需要了解这些位(或使用能够理解位的库)。 – Cornstalks

+1

对于初学者,你需要使用'ifstream'而不是''ofstream' ... – ybungalobill

+0

当你想输出二进制文件到标准输出时,你需要将它转换为base64,因为它可以保存NULL值,这将终止输出的字符串。 –

回答

1

C++ std库有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. 打开文件并解压使用它库像zlib
  2. 发现里面
  3. 的document.xml中文件解析的XML文档。您可能会想要为此使用某种类型的XML解析库。您将不得不查找XML的规格以了解如何获取您想要的文本。
相关问题