我知道在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)
的情况下,vector
和file
出现的顺序...有人可以帮我理解吗?
谢谢,
最佳答案
从问题中不清楚您是否要setprecision
修改fprintf
的工作方式。从评论中只能很清楚。
这是不可能的(至少对于现有的C ++标准库而言)。stdio
和iostreams
系统是分开的,在C ++中大部分是独立的部分。另外,iostreams
东西是在stdio
东西之后被标准化的,因此要支持使setprecision
影响fprintf
意味着要更改fprintf
代码,这是没人愿意做的。
要了解它们之间的区别,请查看ios_base::sync_with_stdio
-使fpritnf
和operator<<
互操作的专用功能。
为了使系统正常工作,您可能必须将fprintf
替换为operator<<
。另一种方法是调整fprintf
的格式字符串,但是您必须将对ios_base::sync_with_stdio
的模糊调用添加到代码中。