【问题标题】:Changing a printf to a cout statement将 printf 更改为 cout 语句
【发布时间】:2018-05-06 01:48:32
【问题描述】:

我正在尝试将 printf 语句更改为 std::cout 语句。我将如何做以下事情:

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

celciusfahrenheit都是float类型,%f来自scanf("%f", &fahrenheit);

【问题讨论】:

  • 嗯?你的意思是std::cout C++ 流?这是一种不同的语言!
  • 这可能是异端建议,但是:也许不用担心。 cout 是 C++ 的全部方式,但您可以在 C++ 程序中继续使用 printf。 (这就是我所做的。)
  • ^ 用“不同的语言”表示您使用的是 C 标签而不是 C++ 标签,并且不要在您的文本或标题中提及 C++。 cout 在 C 中不存在。如果你使用 C++,你应该修复标签。
  • 我想他们想知道该行将如何转换为 c++ 打印。它将是 cout #include & using namespace std;
  • 对于 OP 的代码示例,最好继续使用 printf

标签: c++ printf cout


【解决方案1】:

您可以使用来自<iomanip> 标头的stream manipulators std::fixedstd::setprecision 来实现此目的。

这是一个例子:

#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++ 标准库中。因此,IMO,在您的项目中探索和使用它是一个好主意。

【讨论】:

  • 您在流的末尾忘记了“
  • @Pellekrino:感谢您的意见!实际上,我试图坚持回答手头的问题。根据 OP 的用例,可能存在流刷新问题,我相信对于这个问题有很好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2020-06-15
相关资源
最近更新 更多