CFile 读写文件 (解决汉字,换行,空字符问题) .

CStdioFile file;
 if (!file.Open(_T("d:\\file.txt"),CFile::modeReadWrite))
 {
  file.Open(_T("d:\\file.txt"),CFile::modeCreate|CFile::modeReadWrite);
 }
 CString str;
 CTime time=CTime::GetCurrentTime();
 //str.Format(_T("%d-%-d-%-d %d:%-d:%-d 记录:"),time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond());
 //str字符串以\0结尾,也就是说最后还有一个字节没显示出来但却存在,str.getlenth()不算最后那个\0;
 WORD num=WideCharToMultiByte(CP_ACP,NULL,str,-1,NULL,0,NULL,FALSE);
 char *p=new char[num];
 memset(p,0,num);
 WideCharToMultiByte(CP_ACP,NULL,str,-1,p,num,NULL,FALSE); 
 file.Write(p,strlen(p));
 file.SeekToEnd();
 file.Write("\n",1);//一个换行符\n,写的时候用的asci码,换行用一个字节;但是读的时候,file.getlenth()将换行解释成两个字节;
 file.SeekToEnd();
 file.Write("好",strlen("好"));
 file.Close();
 
 if (!file.Open(_T("d:\\file.txt"),CFile::modeReadWrite))
 {
  file.Open(_T("d:\\file.txt"),CFile::modeCreate|CFile::modeReadWrite);
 }
 char *q;
 q=new char[file.GetLength()+1];
 memset(q,0,file.GetLength()+1);
 file.Read(q,file.GetLength());//read的第二个参数中规定,回车换行算一个字符,往read的第一个参数填写时,换行填写一个char[]的字节;
 CString a(q);
 delete q;
 MessageBox(a);
 file.Close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值