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,不知道这是为什么,我的代码有问题么 展开
又碰到了两个问题,希望您能帮助一下。
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,不知道这是为什么,我的代码有问题么 展开
展开全部
关于坐标0问题,如楼下所说,强制转换float或double试试。如果两种强制转换依然不行,那么是你的数据有问题。
乱码问题,用UE等二进制编辑软件,看看多出来的字符是什么,有利于分析乱码原因。因为第一行首个字符就是乱码,因此这个和你当前列出代码应该没有直接关系,很可能是CString编码问题或者序列化控制问题,这个需要仔细调试了。另外你也可以尝试这样试试看:
ar<<datacount.GetBuffer(0);
datacount.ReleaseBuffer();
看看不使用CString是否有问题。
乱码问题,用UE等二进制编辑软件,看看多出来的字符是什么,有利于分析乱码原因。因为第一行首个字符就是乱码,因此这个和你当前列出代码应该没有直接关系,很可能是CString编码问题或者序列化控制问题,这个需要仔细调试了。另外你也可以尝试这样试试看:
ar<<datacount.GetBuffer(0);
datacount.ReleaseBuffer();
看看不使用CString是否有问题。
追问
我查了一下,多出来的字符是15,对照字符为nak。这是什么意思呢?
追答
NAK的编码是21吧,16进制的0x15
这样看不出问题原因,我用代码测试了一下,也没发现CString的序列化会多出字符,应该还是你哪里处理或者设置有问题,这个只能慢慢调试吧。
来自:求助得到的回答
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
百事牛
2024-10-28 广告
2024-10-28 广告
作为深圳奥凯丰科技有限公司的一员,对于zip删除文件的处理,我们可以这样回答:要打开zip压缩包中删除的文件,实际上需要首先明确文件是否真正从压缩包中移除了。如果文件已从zip中删除,那么就无法直接打开,除非有备份。但如果是指解压后删除了某...
点击进入详情页
本回答由百事牛提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询