我可以使用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