I cannot find an answer for how I might use an already opened fstream to output formatted doubles to a text file. Currently my code is doing this:
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;
}
}
Where p is struct called product_record and price, tax, sANDh, and total are all doubles I have tried doing f << setprecision(4) << p.price << endl;
but this does not work. How can i format this double to have a precision of two decimal places. Like this "#.00"
. How can I achieve this using specifically fstream?
Also, fyi, the overall task is to simply read a txt file, store data in a struct, add structs to a vector and then read from the structs to print to an output file. The input file already has the doubles formatted like 10.00, 2.00 and such(2-decimal places)
Try using
set precision sets the number of significant digits, not the number of decimals places. For example
would output 12.3
Sending in fixed first makes it so you are setting the precision from a fixed position (the decimal place) rather than from the first digit of the floating point value.