Изменение printf в оператор cout - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь изменить оператор printf на оператор std::cout. Как мне поступить так:

printf("\n %.2f Celsius = %.2f Fahrenheit", celsius, fahrenheit);

celcius и fahrenheit имеют тип float, а %f происходит от scanf("%f", &fahrenheit);.

1 Ответ

0 голосов
/ 06 мая 2018

Для этого можно использовать потоковые манипуляторы std::fixed и std::setprecision из заголовка <iomanip>.

Вот пример:

#include <iostream>
#include <iomanip>

// printf("\n %.2f Celsius = %.2f Fahrenheit", celsius, fahrenheit);

int main()
{
    const float celsius = 10.555;
    const float fahrenheit = 50.999;

    std::cout << '\n'
              << std::fixed
              << std::setprecision( 2 )
              << celsius << " Celsius = "
              << fahrenheit << " Fahrenheit";

    return 0;
}

Выход:

10,56 по Цельсию = 51,00 по Фаренгейту

Вот живой пример: https://ideone.com/ElJ0Wg

Но это не так компактно, как с printf. Тем не менее, есть эта библиотека форматирования (fmt), которая пытается достичь компактности printf вместе с другими полезными вещами. И, AFAIK, было предложено включить его в стандартную библиотеку C ++. Итак, ИМО, было бы неплохо изучить и использовать его в своих проектах.

...