MFC写入文件

2024年11月15日 16:55
有6个网友回答
网友(1):

程度没有什么问题,只用把fstream is("student",ios::binary);这个修改为ofstream is("student",ios::binary);就可以了。

网友(2):

没想到这200分会被我赚到!


fstream is("student",ios::binary);
改成
ofstream is("student",ios::binary);
就能写入了。

下面是我在2005上给你实现的代码:

=========================================
include

......

using namespace std;

struct student
{
char a1[4];
char a2[4];
char a3[4];
char a4[4];
char a5[4];

}st1,st2;

void CmfcwriteDlg::OnBnClickedButton1()
{
memcpy(st1.a1 ,"jac",sizeof(4));
memcpy(st1.a2 ,"ja1",sizeof(4));
memcpy(st1.a3 ,"ja2",sizeof(4));
memcpy(st1.a4 ,"ja3",sizeof(4));
memcpy(st1.a5 ,"ja4",sizeof(4));

ofstream os("students");
os.write ((char*)&st1,sizeof(student));
os.close ();

//下面是读取的方法,赠送的
ifstream is("students");
is.read ((char*)&st2,sizeof(student));
is.close ();
::MessageBoxA (NULL,st2.a1,"A",MB_OK);

}

网友(3):

你的fstream对象的参数设置不对,你的第二个参数默认是打开方式的一种,怎么能够写入呢?你可以换成 fstream is("student",ios::binary||ios::out);详细的用法可以去网上搜索一下。
还有就是那个write函数的第一个参数,由于你要写入的是一个结构体,而参数要求是一个字符指针,虽然你做了强制转换,但是在写入的时候可能会出现数据丢失,建议使用循环,对结构体的成员分别写入。

网友(4):

不会写不进去的啊,是不是你写的东西太小了,还在缓存中??如果是这样的话,你最好在写完文件为关闭之前,把缓存强行Flush一下!

或者是你写到其他地方去了而自己还在工程目录里面找文件,所以没有找到

网友(5):

那就别用结构体 用那个CSstdioFile和CFile试试 感觉那样比较简单。

网友(6):

fstream is("student",ios::binary);错啦
改成ofstream is("student",ios::binary);
就OK啦