VC 从编辑框CEdit或富编辑控件CRichEditCtrl读取大容量文本并写入文件的方法

本文解决编辑框、富编辑控件的内容写入文件时,文本长度太大时写入内容被截断的问题!

读取编辑框内容并写入文件,可能最常用的方法是创建文件,利用GetWindowText, 或GetDlgItemText读取编辑框或富编辑控件(Multiline)的内容到字符串,将字符串buffer写入文件。常见代码如下:
CFile file("temp.txt", CFile::modeReadWrite | CFile::modeCreate|CFile::modeNoTruncate);
CString str;
GetDlgItemText(IDC_EDIT1,str); // 字符串或字符buffer存储上限时3 kB,超过的内容将不会被存储。
file.Write(str, sizeof(str)); // write函数写入的是非NULL终止的数据,会产生乱码。
file.Close();

通过上述常见代码的分析可以看出,当文本长度很大时,问题就会很多。即使在file.Write之前添加str的buffer的终止符('\0'),写入的结果除了截断之外,虽然不会有乱码,但是每个字符后都会加一个空格(项目使用Unicode字符集)。这种现象在file构造函数中加入TypeText及TypeUnicode都不会解决。

正确地从编辑框或富编辑控件读取大容量文本并写入文件的方法是:利用CStdioFile逐行读取文本到字符buffer并写入文件。代码如下:

void CTestDlg::OnClickedBtn1()
{
	// TODO: 在此添加控件通知处理程序代码
	CRichE
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值