关于C++从文件读取数据的问题,谢谢!

yanwei123456 2009-05-20 04:30:04
我有一个文件res.txt,里面的内容是[[[1.2356,2,3],[4.5678,5,6],[7.89,8,9]],[[127.2356,21,31],[41.5678,51,61],[71.89,81,91.367]]];前三个中括号一组,后三个中括号一组,我用x[3][3]每次存一下,并且输出一下!我发现,有两个问题:1、我调试单步执行和直接运行的结果不一样!2、直接运行时127.2356总是显示成27.2356少1
我把原代码如下:
void main()
{
fstream fin;
char ch;
int i=0,j=0,k;
bool end = false, endBlock = false, endPa = false;
double x[3][3],y[3],a=0.0;
fin.open("f:\\res.txt",ios::in|ios::out);
if (!fin)
{ cout<<"Error:txt can't open!\n";
exit(1);
}
//*
ch = fin.get();
while(endBlock == false)
{
ch = fin.get();
ch = fin.get();
while(end == false)
{
fin>>a;
x[i][j]=a;
j++;
fin.get();
fin>>a;
x[i][j]=a;
j++;
fin.get();
fin>>a;
x[i][j]=a;
j++;
fin.get();
if(fin.get() == ']')
{
i=0;
j=0;
end = true;
}
else
{
i++;
j=0;
fin.get();
}
}
end = false;
for(k=0;k<=2;k++)
{
cout<<x[k][0]<<" "<<x[k][1]<<" "<<x[k][2]<<endl;
}

if(fin.get() == ']')
{
endBlock = true;
}
else
{
fin.get();
}

}//*/
fin.close();
}
...全文
131 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanwei123456 2009-05-21
  • 打赏
  • 举报
回复
我还想问问get()只能往前,改用peek()是不是可以提取而不往下走?
yanwei123456 2009-05-20
  • 打赏
  • 举报
回复
我还想问问get()只能往前,改用peek()是不是可以提取而不往下走?
yanwei123456 2009-05-20
  • 打赏
  • 举报
回复
我还想问问get()只能往前,改用peek()是不是可以提取而不往下走?
lpf000 2009-05-20
  • 打赏
  • 举报
回复
else
{
//fin.get();这个注释掉 就没问题了
}

lpf000 2009-05-20
  • 打赏
  • 举报
回复
]],[[在这个地方去除字符的时候get了6次,读掉了1
lpf000 2009-05-20
  • 打赏
  • 举报
回复
],[中间的逗号没读取?
ZXW0521 2009-05-20
  • 打赏
  • 举报
回复
单步时候,调试器看到的东西,偶尔也会和实际输出不一样的,
用语句输出的结果是准确的,
yanwei123456 2009-05-20
  • 打赏
  • 举报
回复
上面的不好看!
void main()
{
fstream fin;
char ch;
int i=0,j=0,k;
bool end = false, endBlock = false, endPa = false;
double x[3][3],y[3],a=0.0;
fin.open("f:\\res.txt",ios::in|ios::out);
if (!fin)
{ cout<<"Error:txt can't open!\n";
exit(1);
}
//*
ch = fin.get();
while(endBlock == false)
{
ch = fin.get();
ch = fin.get();
while(end == false)
{
fin>>a;
x[i][j]=a;
j++;
fin.get();
fin>>a;
x[i][j]=a;
j++;
fin.get();
fin>>a;
x[i][j]=a;
j++;
fin.get();
if(fin.get() == ']')
{
i=0;
j=0;
end = true;
}
else
{
i++;
j=0;
fin.get();
}
}
end = false;
for(k=0;k<=2;k++)
{
cout<<x[k][0]<<" "<<x[k][1]<<" "<<x[k][2]<<endl;
}

if(fin.get() == ']')
{
endBlock = true;
}
else
{
fin.get();
}

}//*/
fin.close();
}

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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