【问题标题】:cout vs printf C++ [duplicate]cout vs printf C++ [重复]
【发布时间】:2020-08-12 21:21:49
【问题描述】:

我最近开始学习 C++,并且对 C 有所了解。我想知道为什么人们在 C++ 中大多使用 cout 语句而不是 printf() 函数(即使他们这样做了,我只是从未见过使用C++ 中的 printf 函数)。根据我有限的经验,我发现我更喜欢 printf 函数,因为我发现它可以让我更好地控制要打印的内容。有人可以解释一下区别以及您更喜欢哪一个吗?

【问题讨论】:

  • 您可以重载 operator<< 以使用 cout(和其他 std::ostream 类)支持您自己的类 - 对于 printf,您没有任何此类选项
  • printf 不是类型安全的。这就是为什么大多数人更喜欢cout
  • “根据我有限的经验,我发现我更喜欢 printf 函数,因为我发现它可以让我更好地控制要打印的内容。” - 正如您自己所说,这仅基于您有限的经验。我不明白为什么 C++ I/O 流比 C I/O 函数提供的控制更少。
  • 考虑使用{fmt} 而不是<cstdio> 中定义的不安全函数。另请注意,您可以使用manipulators 控制输入/输出流。
  • 我会怀疑“人们主要使用 cout”的前提。在带有控制台输入和输出的初学者教程中,也许是的,但这主要是因为他们不关心错误处理和流状态的肮脏细节。至少<iostream> 很大,会导致编译时间过长。

标签: c++ printf cout


【解决方案1】:

coutprintf 的 C++ 版本。 printf 要求您指定类型,cout 不需要。 printf 通常也更快。所以cout 不是那么快但很容易,printf 很快,但如果你不熟悉它就不容易。使用 c++ 时,应该使用cout,除非你需要printf。我更喜欢cout,因为它是类型安全的(大事!),而且它更 c++ish(如果这有意义的话)。

注意事项:

  • printf 在标准输出中
  • printf 来自c
  • printf 不是类型安全的!

【讨论】:

    【解决方案2】:

    这个答案'printf' vs. 'cout' in C++很好地解释了std::coutprintf之间的区别。两者都有自己的优点和缺点。

    iostreams 提供额外的功能,例如类型安全性和可扩展性。

    【讨论】:

      【解决方案3】:

      我认为是因为你需要添加特定的参数

      printf ("Characters: %c %c", 'a', 65);
      

      %c - 字符, %d - 整数, %f - 浮动

      您需要添加例如 %d 来声明变量类型为整数

      在 cout 中你不需要这样做,你甚至可以添加字符串或更多变量

      cout << "Hello\n";
      int a = 7;
      cout << "Number seven is : " << a;
      

      这个会打印出来

      Hello
      Number seven is : 7
      

      我认为大多数程序员更喜欢 cout

      【讨论】:

      • 你的第二个例子应该是cout &lt;&lt; "Number seven is : " &lt;&lt; a;
      • 我发现参数给了我更高级别的控制,这(在我看来)是低级编程语言的目的。对我来说,cout 似乎属于 Python 或 javascript 之类的语言,而不是 C++
      • @UnholySheep 没错。对不起,我目前开始用 Java 编程,所以我犯了一个大错误。我编辑了我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多