找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1645|回复: 2

[原创]求助: 怎么对文本文件进行2进制操作(关于二进制输出文件的方法)

[复制链接]
发表于 2009-10-31 01:05:11 | 显示全部楼层 |阅读模式 IP:江苏扬州
那位大哥(大姐)能告诉我怎样对文件进行2进制的读和写,应该用什么函数来实现,以下是我写的程序,那位大虾帮我看看
list.h:
#include<iostream.h>//cout #include<fstream.h> //fstream #include<conio.h> //getche() #include<string.h>//strcpy #include<iomanip.h>//setw() #include<stdio.h>
#include"list.h" int main(int argc,char * *argv)//将一个文件修改后拷到另一个文件
{ char buffer[50]; ifstream myf(argv[1],ios::binary|ios::nocreate|ios::in);
/*此处可以连用两个 | 吗?书上写ios::in是ifstrean 的默认,这里是不是可以省略*/
ofstream tomyf(argv[2],ios::binary|ios::out);
if(myf.fail())//判断文件是不是存在 return -1; myf.seekg(2);//跳过s0
myf.read( buffer,50); //你说的读的函数是这样写的吗?? //比如文件中第3个字母a,第4个字母是f,能在buffer[0]中,会读成af吗? //当读取文件的时候遇到s \n 之类,比喻ss(不是0到f),会在相应的字节中写什么 // tomyf.write( buffer, 50 );
printf("%#x ",buffer[2]); //输出的是0xffffffe0,为什么会是这样? //buffer是一个字节,而0xffffffe0肯定是大于1个字节的
myf.close(); return 0; }
发表于 2009-10-31 01:05:13 | 显示全部楼层 IP:江苏扬州
默认的输出的模式是文本方式。在以文本模式输出时, 若遇到换行符(十进制 10),便制动被扩充为回车换行符(十进制 13)。使用二进制模式输出时,字符不做这种转换。使用二进制模式输出到文件有下列几种方法:
1)以通常方式构造一个流,然后使用 setmode 成员函数,在文件打开后改变模式,例如:
ofstream ofs("test.dat");
ofs.setmode(filebuf::binary);
ofs.write((char *)iarray, 4); // 向二进制文件中写入4字节数据
2)使用ofstream 构造函数中的模式参量指定二进制输出模式,例如:
ofsstream ofs("test.dat", ios::binary);
ofs.write((char *)iarray, 4); // 向二进制文件中写入4字节数据
3) 使用二进制运算符代替 setmode 成员函数:
ofs<<binary;
4) 使用open 函数带一个二进制模式标志打开文件,例如:
filedesc fd = open("test.dat", OBINARY|OCREAT|OWRONLY);
ofstream ofs(fd); // 向二进制文件中写入4字节数据
ofs.write((char *)iarray, 4);
回复

使用道具 举报

发表于 2009-10-31 01:05:14 | 显示全部楼层 IP:江苏扬州
谢谢斑竹
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 13:27 , Processed in 0.254449 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表