2013-02-23 88 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)或类似文件。