CFile::Read读不出文件内容

杉丶 2019-06-18 03:46:52
新人自学MFC入门,老师要求读取二进制文件。


CFile Ffile;
CFileDialog fDlg(TRUE, NULL, NULL, 4 | 2,_TEXT("全部文件(*.*)|*.*|(*.rbs_App*)|*.rbs_App*|文本文件(*.txt,*.ini,*.log)|*.txt;*.ini;*.log||"));
if (fDlg.DoModal() == IDOK)
{
Path = fDlg.GetPathName();//获取文件路径
CString str;
CStdioFile fFile;
CString temp = "solid";
Ffile.Open(Path, CFile::modeRead | CFile::typeBinary);
DWORD nFileLen = Ffile.GetLength();
float Other[84];
Ffile.Seek(0, CFile::begin);
Ffile.Read(Other, 84);
size_t Unit;
Unit = (nFileLen - 84) / 50;
for (size_t i = 0; i <= Unit; i++)
{
float xyz[12];

Ffile.Read(xyz, 48);
//verts.push_back(xyz[12]);

verts.push_back(xyz[0]);
verts.push_back(xyz[1]);
verts.push_back(xyz[2]);
for (size_t j = 1; j < 4; j++)
{
vnorms.push_back(xyz[j * 3]);
vnorms.push_back(xyz[j * 3 + 1]);
vnorms.push_back(xyz[j * 3 + 2]);
}
Ffile.Read(xyz, 2);
}
Ffile.Close();


用CFile::Read读取二进制文件的时候我把前84字节先读出去。
但是Ffile.Read(Other, 84);![图片说明](https://img-ask.csdn.net/upload/201906/04/1559613254_211205.png)二进制STL文件80-84字节读不胡来数据,读后面坐标的时候读的也不是正常数据。
还有在执行到结尾时报错 vector subscript out of range是向量溢出,查过百度之后都对不上,想请教一下这是怎么回事?
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2019-06-18
  • 打赏
  • 举报
回复
另外不要CStdioFile fFile; 用 CFile fFile
schlafenhamster 2019-06-18
  • 打赏
  • 举报
回复
float Other[84]; // 即 84 个 浮点数 = ?字节
'Ffile.Read(Other, 84*sizeof(float));

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧