c++中的文件读取
File reading in C++
我正在使用c++进行图像处理,我必须读取char格式的jpeg图像的标题,我必须检查图像的相机/系统/设备信息,我该怎么做
如果文件不是太大,您可以将其全部读入内存:
#include <vector>
#include <fstream>
std::ifstream infile("thefile.bin", std::ios::binary);
infile.seekg(0, std::ios::end);
const std::size_t filesize = infile.tellg();
std::vector<char> buf(filesize);
infile.seekg(0, std::ios::beg);
infile.read(buf.data(), filesize); // or &buf[0] on old compilers
您的文件将存储在矢量buf
中。如果您只想读取头,您可以读取较小的块,而不是所有filesize
,并适当地处理它们。
一般来说,图像的"meta"部分是固定大小的。
读取文件,使用istream::read
和二进制模式转换成矢量。使用图像格式规范,找到所需的字段。
一次构建一个字节的多字节整数,而不是尝试将位置转换为整数并读取。这将帮助您克服序位问题。
相关文章:
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 读取文件的最后一行并输入到链接列表时出错
- 为什么在读取文件大小时文件IO速度会发生变化
- 读取文件时运行时的未知行为
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C++ 读取文件读取文件不正确
- 读取文件并将其存储在unordered_map中时出现问题
- 读取文件时无法使用 OpenMP 获得加速
- 使用istringstearm和get行缓慢读取文件
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 读取文件时引发异常
- 从标准输入读取文件后读取用户输入
- 在读取文件后重置句柄
- 如何在C++编译时读取文件?
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 读取文件在第二次调用时返回INVALID_HANDLE
- 通过指针读取文件
- 逐行读取文件,并将数据插入变量和数组中