Home > Article > Backend Development > How to achieve precise formatting with std::ostream like printf_s?
Precise Formatting with std::ostream
How to achieve precise formatting with std::cout? Consider the following example:
<code class="cpp">double my_double = 42.0; char str[12]; printf_s("%11.6lf", my_double); // Prints " 42.000000"</code>
In this code, printf_s is used to format and print the double my_double with specific precision and width. The equivalent functionality in std::ostream can be achieved using stream manipulators.
To output " 42.000000" using std::cout, apply these manipulators in sequence:
std::fixed: Sets fixed-point notation instead of scientific notation.
std::setw(11): Sets the width of the output field to 11 characters.
std::setprecision(6): Specifies the number of digits to be displayed after the decimal point.
The correct code becomes:
<code class="cpp">#include <iomanip> std::cout << std::fixed << std::setw(11) << std::setprecision(6) << my_double;</code>
This approach allows for precise formatting of double values using std::ostream without resorting to third-party libraries or custom string manipulation.
For a comprehensive reference on std::ostream formatting, refer to the C Standard Library documentation, specifically the section on "Stream Manipulators."
The above is the detailed content of How to achieve precise formatting with std::ostream like printf_s?. For more information, please follow other related articles on the PHP Chinese website!