用C+读取文件+; 我正在用C++进行图像处理,我必须读取字符格式的JPEG图像的头,我必须检查图像的相机/系统/设备信息,我怎么办呢?< /P> < P>如果文件不是太大,你可以把它全部读入内存: #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 #包括 #包括 std::ifstream infle(“thefile.bin”,std::ios::binary); 填充seekg(0,标准::ios::结束); const std::size_t filesize=infle.tellg(); std::vector buf(文件大小); 填充seekg(0,标准::ios::beg); infle.read(buf.data(),文件大小);//旧编译器上的or&buf[0]

用C+读取文件+; 我正在用C++进行图像处理,我必须读取字符格式的JPEG图像的头,我必须检查图像的相机/系统/设备信息,我怎么办呢?< /P> < P>如果文件不是太大,你可以把它全部读入内存: #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 #包括 #包括 std::ifstream infle(“thefile.bin”,std::ios::binary); 填充seekg(0,标准::ios::结束); const std::size_t filesize=infle.tellg(); std::vector buf(文件大小); 填充seekg(0,标准::ios::beg); infle.read(buf.data(),文件大小);//旧编译器上的or&buf[0],c++,file-processing,C++,File Processing,您的文件将存储在vectorbuf中。如果您只想读取标题,可以读取较小的块,而不是所有的文件大小,并对其进行适当的处理。通常,图像的“meta”部分的大小是固定的 使用istream::Read和二进制模式将文件读入向量。使用图像格式规范,找到所需的字段 一次构建一个字节的多字节整数,而不是试图将一个位置强制转换为整数并读取。这将帮助您克服结尾问题。它真的是一个文件,还是缓冲区中的原始数据?您真的在读取文件方面有问题,还是在如何查找相机的元数据方面有问题?对于元数据,您可能需要问一个更具体的问题

您的文件将存储在vector
buf
中。如果您只想读取标题,可以读取较小的块,而不是所有的
文件大小
,并对其进行适当的处理。

通常,图像的“meta”部分的大小是固定的

使用
istream::Read
和二进制模式将文件读入向量。使用图像格式规范,找到所需的字段


一次构建一个字节的多字节整数,而不是试图将一个位置强制转换为整数并读取。这将帮助您克服结尾问题。

它真的是一个文件,还是缓冲区中的原始数据?您真的在读取文件方面有问题,还是在如何查找相机的元数据方面有问题?对于元数据,您可能需要问一个更具体的问题。顺便说一句,标准英语句子以句号结尾,而不是逗号。