我可以使用C++中的open()函數以二進制模式打開.xls或.PDF文件並讀取它的內容嗎?如果沒有,我怎麼可以構建這樣的文件格式讀取文件的內容(也許更多)的應用程序C++中的文件打開模式
回答
簡單的閱讀應該是:
#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");
}
我想這不是他想要的。他猜想他想讀取.pdf文件中的文字。 – 2013-02-23 17:14:11
@KonfleDolex我也「猜」了。但這不是他所問的。看到我的評論,順便說一句 – sehe 2013-02-23 17:16:05
是的,你可以打開任何文件你的文件系統是一個二進制文件,你也可以閱讀它(只要你的操作系統允許基於文件訪問權限打開該文件,並且沒有其他應用程序鎖定它等)。
接下來,您可能會問「如何解釋PDF或XLS文件?」這就像他們在英格蘭這裏所說的那樣是一大堆魚。 PDF和XLS文件都不是直接「理解」的。我最近看到的一個PDF庫包含幾十個文件,並有幾兆字節的源代碼。我在Python中使用過XLS文件,代碼中有幾千行代碼。
非常感謝Mats。 – user1907672 2013-02-24 07:37:06
參數模式指向與以下 序列之一開頭的字符串(附加字符可以遵循這些序列。):
``R「」打開文本閱讀文件。該流位於文件開頭的 處。
``r +''開放閱讀和寫作。該流位於文件開頭的 處。
``w''將文件截斷爲零長度或創建用於寫入的文本文件。 流位於文件的開頭。
``w +''打開閱讀和寫作。如果該文件不存在 ,則會創建該文件,否則會被截斷。該流位於文件的開頭的 。
``a''開放寫作。如果該文件不存在,則會創建該文件。數據流位於文件的末尾。隨後將文件 寫入文件將始終結束於當前文件末尾 ,而不考慮任何干預fseek(3)或類似文件。
`a +''開放閱讀和寫作。如果該文件不存在 ,則會創建該文件。流位於文件的末尾。子文件 quent寫入文件將始終結束於當前文件尾部的當前 ,而不管任何干預fseek(3)或類似文件。
- 1. C#和C++之間的文件打開模式不一致
- 2. 打開二進制文件的模式
- 3. 以寫入模式在C中打開文件
- 4. 如何以獨佔模式在C++中打開文件
- 5. 使用無模式openfilediaglog框在C#中打開文件
- 6. 在c中打開文件#
- 7. 如何在C#上打開excel文件的只讀模式?
- 8. 打開文件C++
- 9. C#打開文件
- 10. 以寫入模式打開文件
- 11. Python文件打開功能模式
- 12. 如何以ROOT模式打開文件?
- 13. 以追加模式打開文件:使用打開()API
- 14. 如何告訴emacs在C++模式下打開.h文件?
- 15. 如何在打開.h文件時自動進入C++模式?
- 16. C++:以非獨佔模式打開文件
- 17. C#打開文本文件
- 18. grails emacs模式 - 「無法打開加載文件」「項目模式」
- 19. 無法打開C中的文件
- 20. C - 打開無效文件
- 21. 無法打開文件c#
- 22. 文件打開內存c#
- 23. C++打開文件流
- 24. 從C#打開Excel文件#
- 25. 用C#打開.sqlite文件#
- 26. 用C打開文件#
- 27. C多次打開文件
- 28. C文件打開錯誤
- 29. 打開.dat文件用C
- 30. 無法打開文件C
閱讀後你需要做些什麼? – sehe 2013-02-23 17:09:11
您將需要格式規範或可以處理其中的數據的庫。另外,'.xslx'文件只是壓縮的XML文件。 – 2013-02-23 17:10:02
由於.pdf和.xls文件很複雜,您應該找到一個庫來讀取這些文件中的內容。如果你認爲實現它很有趣,你可以從簡單的文件格式開始,比如.bmp文件。閱讀本示例:https://en.wikipedia.org/wiki/BMP_file_format#Example_1 – 2013-02-23 17:15:06