【发布时间】:2020-07-17 20:09:53
【问题描述】:
Update2:缓冲区是我在第二个问题中寻找的。谢谢。
更新:感谢您的回答。我会在 i/o 流上做更多的研究和实践。
如果您不介意,还有一个问题:
我有一些化学工程背景,我们经常需要处理 i/o 流之间随着时间的推移而积累的问题。
考虑到与物理材料流相比,数字信号或多或少是完美的 (?),这可能是一个奇怪的问题。但实际上,有没有可能发生类似的情况?
也许相关领域是网络安全?
我正在尝试与 C 一起练习 C++,并且我知道 C++ 在涉及某些特定事物(例如 std i/o)时更加通用和安全。
但是,尝试使用 std::cout 将句子分成小块非常令人沮丧。当您必须输入一个长字符串时,这项工作会呈指数级增长。与更简单的 printf 相比,这简直太违反直觉了。
例如:
// The same line of code with printf()
printf("#%2d", i);
// Compared to C++ where I have to include the formatting library.
我的问题是,如果安全是 iostream 库的重点,那么严格使用 printf 用于输出和使用 std::cin 用于输入是否安全?
【问题讨论】:
-
安全不是
<iostream>的唯一原因。它提供的远不止这些。 -
完全同意,但比 printf 更好的解决方案是使用 boost 格式库,boost.org/doc/libs/1_66_0/libs/format/doc/format.html
-
cin似乎无关紧要。听起来您的问题只是在 C++ 程序中使用printf()是否可以。 -
您所问的主要是基于意见的。 C++ 流和 C 库的 stdio 之间存在一些交互,这可以在某些极端情况下发挥作用,但这种情况非常罕见。但是,更重要的是,您应该尽最大努力与流达成交易。如果您认为流很困难,那么您还什么都没看到。 C++ 是当今使用的最复杂的通用编程语言,C++ 的复杂部分比流要多得多。
-
C++20 引入了字符串格式化。在 python 样式中使用 cout