C++文件操作——文本写入

文本写入,一般有以下几种方式

(1).采用C语言的fputs函数

USES_CONVERSION;  
char * pLogPath = T2A(FileDlg.GetPathName());  
FILE *fp = fopen(pLogPath, "w");  
if(NULL == fp)  
{  
	AfxMessageBox(L"failed to open txt\n");  
	return;
}  
CString strBuffer;
m_CtrlEditRead.GetWindowText(strBuffer);
//调用函数,T2A和W2A均支持ATL和MFC中的字符转换  
char * chBuf = T2A(strBuffer); 
fputs(chBuf,fp);
fclose(fp); 
如果需要持续追加写入的话,可以采用fseek对指针进行操作

FILE*pFile=NULL;
do 
{
	fopen_s(&pFile,pLogPath,"at+");
} while (pFile==NULL);
fseek(pFile,0L,2);//追加到文件末尾
fputs(chBuf,pFile);
fclose(pFile);
(2).采用C++的ofstream输出流

ofstream outFile(FileDlg.GetPathName());
if (outFile.is_open())
{
	CString strBuffer;
	m_CtrlEditRead.GetWindowText(strBuffer);
	USES_CONVERSION;  
	//调用函数,T2A和W2A均支持ATL和MFC中的字符转换  
	char * chBuf = T2A(strBuffer); 
	//outFile<<chBuf;
	outFile.write(chBuf,strlen(chBuf));
}
outFile.close();
(3).采用MFC中的CStdioFile类相关函数

char * pOldLocale = _strdup(setlocale(LC_CTYPE, NULL));
setlocale(LC_CTYPE, "chs");
CStdioFile File(FileDlg.GetPathName(),CFile::modeCreate|CFile::modeReadWrite);  
CString strBuffer;
m_CtrlEditRead.GetWindowText(strBuffer);
File.WriteString(strBuffer);
File.Flush();  
//文件操作结束关闭  
setlocale(LC_CTYPE, pOldLocale);
free(pOldLocale);
File.Close();  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值