C ++中的文件打开模式

时间:2013-02-23 17:07:58

标签: c++ file encoding

我可以使用C ++中的open()函数以二进制模式打开.xls或.PDF文件并读取其内容吗?如果没有,我如何构建一个可以读取具有这种文件格式(甚至更多)文件内容的应用程序

3 个答案:

答案 0 :(得分:2)

是的,您可以将文件系统中的任何文件作为二进制文件打开,并且您也可以读取它(只要您的操作系统允许根据文件访问权限打开文件,并且没有其他应用程序获得锁定它等)。

接下来,您可能会问“如何解释PDF或XLS文件?”这就是他们在英格兰所说的另一条鱼。 PDF和XLS文件都不能直接“理解”。我最近查看的PDF文件库包含几十个文件,并且是几兆字节的源代码。我在Python中使用过XLS文件,代码中有几千行代码。

答案 1 :(得分: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");
}

答案 2 :(得分:0)

参数模式指向以下列之一开头的字符串  序列(附加字符可以遵循这些序列。):

``R&#39;&#39;打开文本文件进行阅读。流位于          文件的开头。

``R +&#39;&#39;开放阅读和写作。流位于          文件的开头。

``瓦特&#39;&#39;将文件截断为零长度或创建用于写入的文本文件。          流位于文件的开头。

``W +&#39;&#39;开放阅读和写作。如果没有,则创建该文件          存在,否则被截断。流定位于          文件的开头。

``一个&#39;&#39;开放写作。如果文件不存在,则创建该文件。该          stream位于文件的末尾。随后的写作          到文件总是会在当前文件末尾结束,          无论是否有任何干预(3)或类似的。

``一个+&#39;&#39;开放阅读和写作。如果没有,则创建该文件          存在。流位于文件的末尾。 Subse-          对文件的quent写入总是以当前的当前结束          文件结束,不论任何介入的fseek(3)或类似内容。