注册 登录
编程论坛 C++教室

关于二进制文件的读写问题,50分啦!

gmac 发布于 2011-03-01 16:54, 871 次点击
程序代码:
#include <fstream>
#include <string>

using namespace std;
int main()
{int student[5]={1,2,3,4,5};    ofstream outfile("student.dat",ios::binary);   
    outfile.write((char*)&student[0],sizeof(student));
    outfile.close();   
    ifstream infile("student.dat",ios::binary);      
    infile.read((char*)&student[0],sizeof(student));   
    infile.close();   
    return 0;
}
打开student.dat文件后,在行的最后面出现乱码,原因?
谁能详细解释下关于二进制的读写问题?最好举例子!谢谢大家
只有本站会员才能查看附件,请 登录
后面的是神马情况?
谢谢大家的回答。


[ 本帖最后由 gmac 于 2011-3-2 17:10 编辑 ]
10 回复
#2
ZQDragon2011-03-01 18:39
f**k

[ 本帖最后由 ZQDragon 于 2011-3-1 21:42 编辑 ]
#3
gmac2011-03-01 19:48
回复 2楼 ZQDragon
你闲的蛋疼是吗?
#4
buffer2011-03-01 20:48
"student.txt" "student.dat"
不是同一个文件?
#5
pangding2011-03-01 22:13
回复 楼主 gmac
你用什么打开出现的乱码?二进制文件本来就没有可读性,不能用一般的编辑器编辑。
#6
2011-03-01 23:59
outfile.write((char*)&student[0],sizeof(student));

你这代码看着好纠结啊

难道你就不能写成outfile.write((char*)student,sizeof(student));

虽然值好像是一样
#7
2011-03-02 00:02
而且 你的文件名他也不对啊   一个是.txt  一个是.dat

还有  直接用fstream  然后在打开flag里  把读写都标志都加进去 这个比较好用

最好用<< 这个重载运算符  直接写入对象  很爽  尤其是对象里有指针的话   这样可以自己处理

把这个操作符重载一下就ok
#8
gmac2011-03-02 11:14
回复 5楼 pangding
用UltraEdit打开的
#9
gmac2011-03-02 11:21
回复 7楼 cacker
不太明白呀!
#10
pangding2011-03-02 15:46
我的意思就是说乱码是正常现象。本来它也不是字符编码的。你用 UltraEdit 打开一个 exe 看看是不是乱码?那个也是二进制文件。

cacker 的意思就是说函数可以重载。你要不知道是什么意思,暂时不用管。和这个二进制的没关系。
#11
gmac2011-03-02 17:08
回复 10楼 pangding
呵呵。好的,谢谢。
1