关于WriteString 文档覆盖换行的问题

在使用C++的WriteString向文件写入字符串时遇到原始数据被覆盖的问题,解决方法包括在打开文件时添加CFile::modeNoTruncate标志,保持原有内容,以及在写入前调用file.SeekToEnd()定位到文件末尾追加新内容。

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

问题:在file中用WriteString写入字符串时出现原始数据被覆盖的现象

解决办法:

1 在file.Open()中加入 CFile::modeNoTruncate,表示不清除原内容;

file.WriteString(); 前加入file.SeekToEnd();,意思是将新建的内容加到最后;

举例:

             

          CString path = AfxGetApp()->GetProfileString("File", "Name", "*txt");

	// 创建文档选择窗口
	CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, "TXT Files (*.txt)|*.txt||", this);
	dlg.m_ofn.lpstrFile = path.GetBufferSetLength(MAX_PATH);
	

	// 打开对应文件的窗口
	if (dlg.DoModal() != IDOK) return;

	CStdioFile file; 
	CString filepath,filename; 
	filepath=path;
	filename=dlg.GetFileName(); //文件名 
	filename=filepath+filename;  //文件路径 

	file.Open(filename,CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
	file.SeekToEnd();
	file.WriteString(strText); 
	file.Close();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值