2012-11-17 32 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的規格以瞭解如何獲取您想要的文本。
相關問題