在CFile中读取里面的内容

本文介绍了使用C++进行文件读取的两种方法:一种是预定义缓冲区大小;另一种是根据文件实际大小动态分配内存。这两种方法适用于不同场景,特别是当文件大小未知或较大时,动态分配的方法更为合适。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种方式:

	CFile  file;
	CString  str_dates;
	char  buf[1024];
	memset(buf,0,1024);
	try
	{
		if(! file.Open(strFileName,CFile::modeRead))
		{
			AfxMessageBox(L"打开文件失败!");
			return;
		}
		file.Read(buf,sizeof(buf));
		str_dates = buf;
		file.Close();
	}
	catch (CFileException* e)
	{
		CString  str ; 
		str.Format(L"读取树型结构文本数据失败的原因:%d",e->m_cause);
		file.Abort();
		e->Delete();
	}


这种方式,是确定了读取内容的大小。当文件较大时、或者不确定文件的大小的时候,这种声明具体内容大小的,会有些局限性。

可以使用第二种方式:

根据文件的大小申请空间

	CFile  file;
	CString  str_dates;
	try
	{
		if(! file.Open(strFileName,CFile::modeRead))
		{
			AfxMessageBox(L"打开文件失败!");
			return;
		}
		LONG nLengths = file.GetLength();
		char *buf ;
		buf = new char[nLengths + 1];
		memset(buf,0,nLengths+1);
		buf[nLengths] = 0;
		file.Read(buf,nLengths);
		str_dates = buf;
		file.Close();
		delete[]  buf;
	}
	catch (CFileException* e)
	{
		CString  str ; 
		str.Format(L"读取树型结构文本数据失败的原因:%d",e->m_cause);
		file.Abort();
		e->Delete();
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糯诺诺米团

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值