0

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

4

3 回答 3

2

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

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

于 2013-02-23T17:16:55.500 回答
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");
}
于 2013-02-23T17:13:24.903 回答
0

参数模式指向以下列序列之一开头的字符串(附加字符可能跟随在这些序列之后。):

``r'' 打开文本文件进行阅读。流位于文件的开头。

``r+'' 为读写打开。流位于文件的开头。

``w'' 将文件截断为零长度或创建用于写入的文本文件。流位于文件的开头。

``w+'' 为读写而打开。如果文件不存在,则创建该文件,否则将其截断。流位于文件的开头。

``a'' 开放写。如果文件不存在,则创建该文件。流位于文件的末尾。对文件的后续写入将始终在文件的当前末尾结束,而与任何干预 fseek(3) 或类似内容无关。

``a+'' 为读写打开。如果文件不存在,则创建该文件。流位于文件的末尾。对文件的后续写入将始终在文件的当前末尾结束,而与任何干预 fseek(3) 或类似内容无关。

于 2017-06-20T07:22:10.123 回答