2013-02-23 90 views
0

我可以使用C++中的open()函數以二進制模式打開.xls或.PDF文件並讀取它的內容嗎?如果沒有,我怎麼可以構建這樣的文件格式讀取文件的內容(也許更多)的應用程序C++中的文件打開模式

+0

閱讀後你需要做些什麼? – sehe 2013-02-23 17:09:11

+0

您將需要格式規範或可以處理其中的數據的庫。另外,'.xslx'文件只是壓縮的XML文件。 – 2013-02-23 17:10:02

+0

由於.pdf和.xls文件很複雜,您應該找到一個庫來讀取這些文件中的內容。如果你認爲實現它很有趣,你可以從簡單的文件格式開始,比如.bmp文件。閱讀本示例:https://en.wikipedia.org/wiki/BMP_file_format#Example_1 – 2013-02-23 17:15:06

回答

0

簡單的閱讀應該是:

#include <iostream> 
#include <fstream> 
#include <algorithm> 
#include <iterator> 

std::vector<char> readfile(std::string const& fname) 
{ 
    std::ifstream ifs(fname.c_str(), std::ios::binary); 
    std::istreambuf_iterator<char> f(ifs.rdbuf()), l; 

    std::vector<char> bytes; 
    std::copy(f, l, std::back_inserter(bytes)); 
    return bytes; 
} 

int main() 
{ 
    auto bytes = readfile("my.pdf"); 
} 
+0

我想這不是他想要的。他猜想他想讀取.pdf文件中的文字。 – 2013-02-23 17:14:11

+0

@KonfleDolex我也「猜」了。但這不是他所問的。看到我的評論,順便說一句 – sehe 2013-02-23 17:16:05

2

是的,你可以打開任何文件你的文件系統是一個二進制文件,你也可以閱讀它(只要你的操作系統允許基於文件訪問權限打開該文件,並且沒有其他應用程序鎖定它等)。

接下來,您可能會問「如何解釋PDF或XLS文件?」這就像他們在英格蘭這裏所說的那樣是一大堆魚。 PDF和XLS文件都不是直接「理解」的。我最近看到的一個PDF庫包含幾十個文件,並有幾兆字節的源代碼。我在Python中使用過XLS文件,代碼中有幾千行代碼。

+0

非常感謝Mats。 – user1907672 2013-02-24 07:37:06

0

參數模式指向與以下 序列之一開頭的字符串(附加字符可以遵循這些序列。):

``R「」打開文本閱讀文件。該流位於文件開頭的 處。

``r +''開放閱讀和寫作。該流位於文件開頭的 處。

``w''將文件截斷爲零長度或創建用於寫入的文本文件。 流位於文件的開頭。

``w +''打開閱讀和寫作。如果該文件不存在 ,則會創建該文件,否則會被截斷。該流位於文件的開頭的 。

``a''開放寫作。如果該文件不存在,則會創建該文件。數據流位於文件的末尾。隨後將文件 寫入文件將始終結束於當前文件末尾 ,而不考慮任何干預fseek(3)或類似文件。

`a +''開放閱讀和寫作。如果該文件不存在 ,則會創建該文件。流位於文件的末尾。子文件 quent寫入文件將始終結束於當前文件尾部的當前 ,而不管任何干預fseek(3)或類似文件。