然后在对话框的列表框中添加人名。
下面是PersonData 示例写文件的语句(在CPersonDataDlg::UpdateFile()函数中):
PersonInfo pi; //创建个人信息变量
//从对话框的空间变量中获得个人信息
strcpy(pi.szNcom,m_szNcom);
if (m_szSex == "男" )
pi.nSex = 0;
else
pi.nSex = 1;
strcpy(pi.szBirth,m_szBirth);
strcpy(pi.szTitle,m_szTitle);
strcpy(pi.szOffice,m_szOffice);
strcpy(pi.szOfficePhone,m_szOfficePhone);
strcpy(pi.szHcom,m_szHcom);
strcpy(pi.szHcomPhone,m_szHcomPhone);
strcpy(pi.szMobilePhone,m_szMobilePhone);
strcpy(pi.szEMail,m_szEMail);
//写入个人信息
m_File.Write(&pi,sizeof(PersonInfo));
注意CFile::Read()和CFile::Write()都不提供缓冲机制,所有的数据都是立即读取或者立
即写入的,这与CArchive 类不同,CArchive 类提供写缓冲。
同时CFile::Write()还可能由于写入失败而抛出CFileException 异常,例如磁盘已满或者
磁盘写保护等,同样需要TRY/CATCH 结构对这些异常进行捕获。
对于写入cāo作,CFile 还提供了CFile::Flush()用于将任何留在文件缓冲区中的数据强制写
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·192·
入磁盘文件,原型为:
virtual void Flush( );
注意CFile::Flush()并不能保证强制将留在CArchive 缓冲区的数据写入文件,必须先使用
CArchive::Flush()函数。
8.2.3 定位cāo作
CFile 可以使程序随机读写文件,这一随机xìng就是通过定位cāo作完成的。定位cāo作用于定
位CFile 的读写指针,使得程序可以读写任意位置的数据,而不是在顺序读写中只能依照从
前往后的顺序进行读写。
CFile 为定位cāo作提供了下列成员函数。
1.CFile::GetLength()函数
CFile::GetLength()函数用于获得打开文件的长度,即文件的字节数,原型为:
virtual DWORD GetLength( ) const;
函数返回值为文件的长度。
下面的代码用于获得test.dat 文件长度:
CFile file;
fi