C++中的文件打开模式
File opening modes in C++
我可以在C++中以二进制模式使用open((函数打开.xls或.PDF文件并读取其内容吗?如果没有,我如何构建一个应用程序,可以读取具有这种文件格式(可能更多(的文件的内容
是的,您可以将文件系统中的任何文件作为二进制文件打开,也可以读取它(只要您的操作系统允许根据文件访问权限打开文件,并且没有其他应用程序锁定它,等等(。
接下来,你可能会问"我该如何解读PDF或XLS文件?"正如英国人所说,这完全是另一回事。无论是PDF,还是XLS文件都不是直接"理解"的。我最近看到的一个PDF库包含几十个文件,是几兆字节的源代码。我使用过Python中的XLS文件,其中的代码有几千行代码。
简单的读数是:
#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");
}
参数模式指向一个以以下内容之一开头的字符串序列(这些序列后面可能会有其他字符。(:
``r''打开文本文件进行读取。溪流位于文件的开头。
``r+''开放阅读和写作。溪流位于文件的开头。
``w"将文件截断为零长度或创建要写入的文本文件。流位于文件的开头。
``w+''开放阅读和写作。如果文件未创建存在,否则将被截断。溪流位于文件的开头。
``a"可供写作。如果文件不存在,则会创建该文件。这个流位于文件的末尾。后续写入到该文件将总是以当时的文件的当前结尾结束,而与任何介入的fseek(3(或类似物无关。
``a+''开放阅读和写作。如果文件未创建存在流位于文件的末尾。Subse-对文件的quent写入将始终以当时的当前值结束文件末尾,而不考虑任何插入的fseek(3(或类似内容。
相关文章:
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 文件模式标志"ios::app"是否用于删除文件(如果文件已存在)?
- C++二进制模式下写入和读取文件
- C++将特定的数据模式从RFID阅读器写入文本文件
- glob只给出匹配模式的第一个文件
- 在 eclipse 中以发布模式构建后没有可执行文件
- 是否有标准的文件保存和交换模式
- 生成文件匹配规则和配方中的模式
- ios::app 和 ios::noreplace 模式在文件处理中有什么区别?
- C++文件可配置的编译时多态模式?
- QTextStream 无法使用开放模式写入文件,包括"t" QIODevice::Append
- Gettin 目标模式不包含来自未修改的生成文件的"%"?
- 为什么隐藏文件无法在 MFC 中的创建和写入模式下打开?
- 如何仅使用 std::filebuf 将数据(二进制模式)写入文件
- Visual Studio在发布模式下构建,但用户收到消息说他们需要调试文件
- 在此任务上遇到麻烦,我们需要使用指针和数组来找到文本文件中某些数字的平均值,中值和模式
- 奇怪的文本模式文件输出行为
- 从C++源代码中打开一个emacs组织模式文件,并自动创建一个项目
- 从*自动生成objective-c类.XSD模式文件