CString类型的字符串写入文件,所遇到的问题

自己在维护项目的时候所遇到的问题,现在将自己的经验写下来和大家分享:

这是我一开始想将str以ASCII码的形式保存成文件方便查看,下面是我使用的代码:

FILE *pt = NULL;
CString str;
str.Format(_T("http://www.baidu.com"));
pt = fopen("D:\\pagedownload", "a");
fprintf(pt, "%s", str.GetBuffer(str.GetLength()));
fprintf(pt, "\n---------------\n");
ret.ReleaseBuffer();
fclose(pt);

但是这样的代码所写入文件后的内容是这样的:
这里写图片描述
结果是错误的,文件并没有保存我想要的内容。

查资料之后我明白了CString和char 的区别,工程的CString涉及Unicode编码,将CString转换成Char ,就可以将字符串正确的写入文件了

于是将代码改写成如下所示:

FILE *pt = NULL;
CString str;
char buffer[30] = {'\0'};
str.Format(_T("http://www.baidu.com"));
WideCharToMultiByte(CP_ACP, 0, str.GetBuffer(0), str.GetLength(), buffer, 30, 0, 0);
pt = fopen("D:\\pagedownload", "a");
fprintf(pt, "%s", buffer);
fprintf(pt, "\n---------------\n");
str.ReleaseBuffer();
fclose(pt);

结果是这样:
这里写图片描述
这样的结果是我想要的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值