如何以二进制形式打开一个任意格式文件,然后每次读出若干字节呢?

galaxy999 2003-10-19 02:03:00
比如打开一个文件,每次读一个字节,依次放入一个数组。
以下是我写的代码:
unsigned char bitchar[16];
char * bitchar1;
ifstream myfile( "文件名和路径",ios::in|ios::binary);
for(int i=0;i<16;i++) // 假设总共只读16个字节
{
myfile.get((char*)bitchar1,1); //每次读一个放到数组中
bitchar[i]=*bitchar1;
}

for(int i=0;i<16;i++)
{
cout<<"bitchar[i]<<endl;// 把数组中内容依次显示。
}
在myfile.get((char*)bitchar1,1)这句中如果第二个参数用1的话,读不出来内容,
如果改成myfile.get((char*)bitchar1,2);反而能每次读出一个字节。
请大家分析一下这是什么原因呢?

另外,还有没有更好的方法一次读出若干字节呢?比如每次读8个,知道把整个文件读完。

...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
galaxy999 2003-10-23
  • 打赏
  • 举报
回复
原来是这样啊,明白了。
对了,那里有c++标准库的详细解说的下载啊
daizh 2003-10-23
  • 打赏
  • 举报
回复
ifstream是从istream派生下来的,它本身没有get成员函数,所以它调用的是基类istream::get,而istream& istream::get(char *str,streamsize count)这种形式可读取多达count-1个字符,并存入str所指的阿字符序列中。
这样你就明白了吧。
galaxy999 2003-10-23
  • 打赏
  • 举报
回复
如果改成myfile.get((char*)bitchar1,2);反而能每次读出一个字节。

这个情况始终不明白怎么搞的
tonyzhengjq 2003-10-19
  • 打赏
  • 举报
回复
你用 C的方式试试,open()read()write();

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧