C++/MFC中结构体使用CString出现问题
问题描述:
我定义了如下结构体:
struct u
{
CString sNumber;
CString sPass;
int PRIOR;
};
我在OnDestroy()函数中去将结构体中的三个变量写入到user.dat文件中,但是当我
再次读取文件中数据时,只有int类型的PRIOR有数据,CString类型拿不到数据。打断点的结果是,写入数据时,数据是成功写入的。
CFile file;//创建一个CFile文件
if (!file.Open(_T("./user.dat"),CFile::modeCreate|CFile::modeWrite))//判断是否有文件,return是必须有的
{
AfxMessageBox(_T("保存文件失败"));
return;
}
CListCtrl *plist = (CListCtrl *)GetDlgItem(IDC_LIST);
int i = 0,nCount = plist->GetItemCount();
u user;
// (int i = 0; i < nCount; i++)
while (i<nCount)
{
user.sNumber = plist->GetItemText(i, 0);
user.sPass = plist->GetItemText(i, 1);
file.Write(&user, sizeof(user));//写入一个结构体
++i;
}
file.Close();
user.PRIOR = plist->GetItemText(i, 2) == _T("高级");
我知道可以用char,但是更想使用CString类型。
答
你写进去的只是cstring的地址,并没有把cstring的内容写进去,最简单的的可以把结构体内的cstring改为char类型的数组然后进行你现在的存法,第二种就是写数据时将结构体内的成员变量一个一个的写入,读取时也是一个一个的读取,就可以了
答
这个没办法,你CString写入文件,然后读取出来的时候,你要还原成CString,难度不小
还是用char数组比较简单