C++ in>>hex>> 读取出来的文件部分缺失

如题,想编写一个可以读取文件内16进制格式数据的程序,但是经过测试发现一旦读取到16进制代码为"20"的,系统就会自动跳过,求解。程序如下:#include<stdio.... 如题,想编写一个可以读取文件内16进制格式数据的程序,但是经过测试发现一旦读取到16进制代码为"20"的,系统就会自动跳过,求解。
程序如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include<iostream>#include<fstream>using namespace std;unsigned char a[10000][15];int b[10000][15];main(){ int i,j,k;ifstream in("2.bmp", ios::in|ios::binary);j=0;//while (!in.eof())for (k=0;k<10;k++) { for (i=0;i<16;i++) { in>>hex>>a[10000][15]; b[j][i]=int(a[10000][15]); } for (i=0;i<16;i++) { cout<<hex<<b[j][i]<<" "; } cout<<endl; j=j+1; }}
展开
 我来答
金色潜鸟
2015-07-30 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5575万
展开全部
in>>hex>>a[10000][15]; 语句里的数组元素下标超界。 最大下标 a[9999][14].

0x20 是空格符的编码。原文件是文本文件还是二进制文件?
二进制文件 应当用 无格式 方法 读写,
而 hex 是 有格式读写。
----
二进制文件 无格式 读 用成员函数:
istream& read (char* s, streamsize n);
----
追问
能写一下具体的程序吗~?
追答
不能。因为我不知道你文件的内容和结构,是文本文件还是二进制文件。没法胡猜。
二进制文件 无格式 读 用成员函数: istream& read (char* s, streamsize n);
例如:for (k=0;k<10;k++) in.read(a[k],15) ;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式