我找不到如何使用已打开的fstream将格式化的双打输出到文本文件的答案。目前我的代码是这样做的:
int writeToFile (fstream& f, product_record& p)
{
if (!f){
cout << "out file failed!!error" << endl;
return -1;
} else {
f << p.idnumber << endl;
f << p.name << endl;
f << p.price << endl;
f << p.number << endl;
f << p.tax << endl;
f << p.sANDh << endl;
f << p.total << endl;
f << intArrToString( p.stations ) << endl;
}
}
其中p是名为product_record的结构,而price,tax,sANDh和total都是 double * 我尝试过f << setprecision(4) << p.price << endl;
,但这不起作用。如何格式化此double以具有两位小数的精度。像这样"#.00"
。如何使用特定的fstream实现这一目标?
另外,fyi,总体任务是简单地读取txt文件,将数据存储在结构中,将结构添加到向量,然后从结构中读取以打印到输出文件。输入文件已经具有格式化为10.00,2.00等的双精度(2位小数)
答案 0 :(得分:5)
尝试使用
f << fixed << setprecision(2) << endl;
set precision设置有效位数,而不是小数位数。例如
cout << setprecision(3) << 12.3456 << endl;
将输出12.3
首先以固定的方式发送,因此您可以从固定位置(小数位)设置精度,而不是从浮点值的第一个数字设置。