哪个是用c ++打印到控制台的最佳方法?

Dev*_*umi 13 c++

我已经阅读了三种方法,可以从各种来源以c ++的形式将内容打印到控制台.

  1. 使用using namespace std;然后使用cout(CodeBlocks标准版)
  2. 不使用以上和使用std::coutstd::endl;(C++ Primer)
  3. 使用printf(HackerRank)

哪个是首选,为什么?

Fan*_*Fox 21

2号修正案.(std::cout'\n')

为什么?

  1. 因为你应该避免using namespace std.资源
  2. (除其他原因外)因为cout类型安全而printf不是. 资源
  3. std::endl将强制将输出缓冲区刷新到控制台.除非您特别希望这种情况发生使用<< '\n'<< "...string\n".资源


Ash*_*rma 6

除非你真的很在意速度,否则 cout 和 printf 都可以。如果你想要更快的运行时间,这里有一些提示:

  • 仅使用 printf 而不使用 cout。与混合使用 printf 和 cout 或仅使用 cout 相比,这将提供更高的速度。
  • 或者只使用 cout 但在执行开始时添加以下内容 ios_base::sync_with_stdio(false);cin.tie(NULL);。printf 和 cout 有两个单独的流,默认情况下它们是同步的。由于这种同步,大量的运行时间被浪费了。这两行代码将停止同步,但如果添加这些行,请注意不要使用任何 printf,否则打印可能会以随机顺序进行。
  • endl除非您想刷新输出缓冲区,否则不要使用。大量的 endl 会使代码变慢。使用cout<<'\n';来代替。


Ale*_*uer 1

你的第一点基本上做同样的事情。更好的做法是使用std::代替,using namespace std;因为后者会污染全局名称空间并可能导致命名冲突。

没有提到的是,您可以使用using <namespace>::<element>;(例如using std::cout;)选择性地公开命名空间的一部分。最好的做法是对语句进行详细说明,但此选项仍然没有暴露整个名称空间那么糟糕。

printf并不安全cout(流操作<<员可以很好地打印您想要的内容),您应该在开始时避免它。