MFC中文件读写的几种方法

MFC文件操作:

1、写文件

void CFileView::OnFileWrite()
{
	// TODO: 在此添加命令处理程序代码
	//方法一
	/*//FILE *pFile = fopen("1.txt" , "w") ;
    //pFile = fopen_s()
	FILE *pFile ;
	fopen_s(&pFile , "1.txt" , "w") ;
	fwrite("www.baidu.com" , 1 , strlen("www.baidu.com") , pFile) ;
	//fseek(pFile , 0 , SEEK_SET) ;
	//fwrite("testzengjia" , 1 , strlen("testzengjia") , pFile) ;
	fclose(pFile) ;*/
//  方法二
// 	ofstream ofs("2.txt") ;
// 	ofs.write("www.baidu.com" , strlen("www.baidu.com")) ;
// 	ofs.close() ;
	//方法三
	/*HANDLE hFile ;
	hFile = CreateFile(TEXT("3.txt") , GENERIC_WRITE , 
		0 , NULL ,CREATE_NEW , FILE_ATTRIBUTE_NORMAL ,
		NULL)  ;
	DWORD dwNum ;
	WriteFile(hFile , TEXT("http:www.baidu.com") , 
		sizeof(TCHAR) * strlen("http:www.baidu.com") , &dwNum , NULL) ;
	CloseHandle(hFile) ;//strlen在此返回的是字符数Unicode编码*/
	//方法四
	CFile file(TEXT("4.txt") , CFile::modeCreate | CFile::modeWrite) ;
	file.Write(TEXT("www.baidu.com") , sizeof(TCHAR) * strlen("www.baidu.com")) ;
	file.Close() ;
}

2、读文件

void CFileView::OnFileRead()
{
	// TODO: 在此添加命令处理程序代码
	//方法一
	/*FILE *pFile ;
	fopen_s(&pFile , "1.txt" , "r") ;
	char str[100];
	
	fseek(pFile , 0 , SEEK_END) ;
	int len = ftell(pFile) ;
	rewind(pFile) ;

    fread(str , 1 , len , pFile) ;
	str[len] = '\0' ;

	CClientDC dc(this) ;
	dc.TextOut(0 ,0 , (CString)str) ;

	fclose(pFile) ;*/
	//方法二
	/*ifstream ifs("2.txt") ;
	char str[100] ;
	memset(str , 0 , 100) ;
	ifs.read(str , 100) ;
	ifs.close() ;
	MessageBox((CString)str) ;*/
	//方法三
	/*HANDLE hFile ;
	hFile = CreateFile(TEXT("3.txt") , GENERIC_READ , 0 , 
		               NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL) ;
	TCHAR szBuffer[100] ;
	DWORD dwNum ;
	ReadFile(hFile , szBuffer , 100 , &dwNum , NULL) ;
	szBuffer[dwNum/2] = '\0' ;//szBuffer是按字符计数 , dwNum是按字节计数
	CloseHandle(hFile) ;
	MessageBox(szBuffer) ;*/
	//方法四
	CFile file(TEXT("4.txt") , CFile::modeRead) ;
	
	UINT len = file.GetLength() ;
	TCHAR *szBuffer ;
	szBuffer = new TCHAR[len / 2 + 1] ;
	file.Read(szBuffer , len) ;
	szBuffer[len / 2] = 0 ;
	file.Close() ;
	MessageBox(szBuffer) ;

}

注意:在VS2012中strlen()等求出的是字符数,注意区分新旧版本中字符与字节,现在基本都用Unicode编码,每个字符占用两个字节。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值