MFC输出到TXT文件

您好,不好意思又打扰你。又碰到了两个问题,希望您能帮助一下。1.我从MFC输出到TXT文件的时候,发现每一行的第一个字符都是乱码,如图所示。这是什么原因呢?怎样修改代码才... 您好,不好意思又打扰你。
又碰到了两个问题,希望您能帮助一下。
1. 我从MFC输出到TXT文件的时候,发现每一行的第一个字符都是乱码,如图所示。

这是什么原因呢?怎样修改代码才会没有乱码出现?

2. 我发现输出之后的数据全部都为0,不知道这是什么原因。我的serialize函数如下:
void CDrawLineDoc::Serialize(CArchive& ar)
{

if (ar.IsStoring())
{
// TODO: 在此添加存储代码
double ncount=CDataStorageArray.GetSize();
CString datacount;
datacount.Format("There are %d points\r\n",ncount);
ar<<datacount;
CString datashow;
for (int i=0;i<ncount;i++)
{
datashow.Format("x%f y%f\r\n",CDataStorageArray.GetAt(i)->m_pt.x,CDataStorageArray.GetAt(i)->m_pt.y);
ar<<datashow;
}

}
其中CDataStorageArray是我用CArray自定义的一个动态数组,数组元素是CDataStorage类对象指针,CDataStorage的数据成员是CPoint。到底是哪里出错了呢?我用MessageBox检查过,数据存到动态数组中了,可是怎么保存之后就成了0呢?
希望得到您的解答,谢谢!
不好意思,我的意思是,txt文件中应该有数据的,我也想输出float型,但是得到的数据全都是0或者0.000000,不知道这是为什么,我的代码有问题么
展开
 我来答
bhtzu
2015-01-05 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4308万
展开全部
关于坐标0问题,如楼下所说,强制转换float或double试试。如果两种强制转换依然不行,那么是你的数据有问题。
乱码问题,用UE等二进制编辑软件,看看多出来的字符是什么,有利于分析乱码原因。因为第一行首个字符就是乱码,因此这个和你当前列出代码应该没有直接关系,很可能是CString编码问题或者序列化控制问题,这个需要仔细调试了。另外你也可以尝试这样试试看:
ar<<datacount.GetBuffer(0);
datacount.ReleaseBuffer();
看看不使用CString是否有问题。
追问
我查了一下,多出来的字符是15,对照字符为nak。这是什么意思呢?
追答
NAK的编码是21吧,16进制的0x15
这样看不出问题原因,我用代码测试了一下,也没发现CString的序列化会多出字符,应该还是你哪里处理或者设置有问题,这个只能慢慢调试吧。
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百事牛
2024-10-28 广告
作为深圳奥凯丰科技有限公司的一员,对于zip删除文件的处理,我们可以这样回答:要打开zip压缩包中删除的文件,实际上需要首先明确文件是否真正从压缩包中移除了。如果文件已从zip中删除,那么就无法直接打开,除非有备份。但如果是指解压后删除了某... 点击进入详情页
本回答由百事牛提供
bignode
2015-01-04 · TA获得超过2664个赞
知道大有可为答主
回答量:1427
采纳率:75%
帮助的人:557万
展开全部
如果想输出浮点数可改成
datashow.Format("x%f y%f\r\n",
(float)(CDataStorageArray.GetAt(i)->m_pt.x),
(float)(CDataStorageArray.GetAt(i)->m_pt.y));
至于有乱码和原来的文件有无内容无关。从你的代码中看不出产生乱码的原因。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式