为什么 C++ 标准引入了更多的输出方法而没有相应的输入方法?

o_o*_*tle 3 c++ io c++20

C++20 引入<format>(C++23 很快引入<print>)。我喜欢这些方法,并且我总是尝试在支持时使用std::format它,而不是使用一系列<<.

但我注意到这种演变似乎只出现在输出中。为什么没有<scan>输入法之类的东西?

use*_*522 8

std::format并且std::print本身已经是一个相当大的库添加,我可以想象标准委员会考虑添加附加功能的资源有限,不允许他们同时考虑等效的输入。

也可能是委员会希望在添加等效输入之前首先收集更多经验std::formatstd::print或者在提议的实施细节或此类添加的优先级中原则上反对此类添加。

我找不到任何指向这些方向的明确声明,而且我也没有内幕知识。

无论如何,委员会仍在考虑一项std::scan提案作为该提案的后续提案std::format,请参阅https://github.com/cplusplus/papers/issues/493以了解该提案迄今为止所经历的程序日志。你还可以看到有关于设计方向的民意调查等。自2019年以来似乎没有太多活动,但我不确定这是否真的意味着什么。

在 2022 年 3 月的 Reddit 帖子中该提案的作者之一、scnlib的作者 Elias Kosunen提到,在推进该提案之前,仍然存在一些不确定的设计问题需要确定,希望能够以 C++26 为目标,但承认进一步的延迟比在标准中添加“半生不熟”的设计更好。

截至 2023 年 2 月,该提案仍标记为“需要修订”,大概正在等待作者继续进行。