我知道在C ++中我可以使用setprecision如下:

streamsize prec = cout.precision();

cout << "Your grade is: " << setprecision(3) << finalGrade << setprecision(prec);


如何适应以下旧代码,尤其是在写入文件时?

for ( int k = 0 ; k < vector.size() ; k++ )
{
   fprintf( myFile, "%i\t%f\t%f\n", k+1, vector[k].x, vector[k].y );

   std::cout << vector[k].x << "\t" << vector[k].y;
}


我特别困惑的是,当存在多个变量时,例如setprecision(3)元素写入setprecision(prec)的情况下,vectorfile出现的顺序...

有人可以帮我理解吗?

谢谢,

最佳答案

从问题中不清楚您是否要setprecision修改fprintf的工作方式。从评论中只能很清楚。

这是不可能的(至少对于现有的C ++标准库而言)。

stdioiostreams系统是分开的,在C ++中大部分是独立的部分。另外,iostreams东西是在stdio东西之后被标准化的,因此要支持使setprecision影响fprintf意味着要更改fprintf代码,这是没人愿意做的。

要了解它们之间的区别,请查看ios_base::sync_with_stdio-使fpritnfoperator<<互操作的专用功能。

为了使系统正常工作,您可能必须将fprintf替换为operator<<。另一种方法是调整fprintf的格式字符串,但是您必须将对ios_base::sync_with_stdio的模糊调用添加到代码中。

10-08 07:00