在Qt中进行txt文件输出时遇见的输出数据混乱现象与自我解决方法
这里我们来看下下面这个程序,这个程序的主要功能是为了生成一个文件,文件的内容是将自己定义的freenode文件的自动递增的nodeNumber的这个数值进行输出,程序与效果如下。
freenode *p1 = new freenode(1,0,"volt"); QFile Vot_S("Vot_S.txt"); if(Vot_S.open(QFile::Append)) { QTextStream outv1(&Vot_S); outv1<<p1->nodeNumber<<'\t'; } freenode *p2 = new freenode(1,0.0,"volt"); QTextStream outv2(&Vot_S); outv2<<p2->nodeNumber<<'\t'; freenode *p3 = new freenode(1,0.0,"cur"); QTextStream outv3(&Vot_S); outv3<<p3->nodeNumber<<'\t';

这里应该的效果是生成1 2 3 这样子的txt文件效果,结果变成了1 3 2 这样的效果。
nodenumber这个参数是当生成一个freenode对象时候,自动进行递增。
这里按照道理来说,程序的输出应该与定义的时候相同,按照定义的顺序,输出为1 2 3 ,可效果却不是这样子,在此提出疑问,希望有人可以解答。
在这里,我提出了自己的改进程序,进行赋值操作,最后统一输出,来解决这个问题,程序如下:
freenode *p1 = new freenode(1,0,"volt"); int a1 = p1->nodeNumber; freenode *p2 = new freenode(1,0.0,"volt"); int a2 = p2->nodeNumber; freenode *p3 = new freenode(1,0.0,"cur"); int a3 = p3->nodeNumber; QFile Vot_S("Vot_S.txt"); if(Vot_S.open(QFile::Append)) { QTextStream outvolt(&Vot_S); outvolt<<a1<<'\t'<<a2<<'\t'<<a3<<endl; }
这里的程序运行效果如下,所要的结果与自己想象的结果一样。

下面的是自己设置的电压值。
以上,希望各位提出建议并感谢各位参考。

浙公网安备 33010602011771号