gpt4 book ai didi

c++ - 为什么 std::stof、std::stod 和 std::stold 处理带有异常的错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:27 30 4
gpt4 key购买 nike

为什么std::stof的理由是什么? , std::stod , 和 std::stold抛出异常?

http://en.cppreference.com/w/cpp/string/basic_string/stof

输入错误是一个常用的例子,说明当通过异常处理错误时不合适(通常用“异常情况”的古怪循环推理来表达,但仍然是一个很好的例子)。 C++ 标准库中并没有以某种方式禁止其他错误处理机制。例如,另一个 C++11 新人,std::unordered_map::insert系列,表示使用 std::pair<iterator,bool> 中的第二个元素失败返回类型。 std::unordered_map::insert 内的故障功能似乎比输入错误更“特殊”。如果不尝试插入,则可以保证插入会成功,但如果不进行解析,则无法保证解析会成功。

我只是想知道当时这些功能被接受到标准中的基本原理是什么。希望它能在某个地方发表,或者委员会成员可以顺便过来谈谈这件事。我并不是要一篇关于异常与其他机制的优缺点的综合论文。

最佳答案

原始论文,N1803: Simple Numeric Access使用异常。然而,这篇论文没有解释任何关于他们设计的任何部分的来源(比如他们为什么完全忽略分配器!)。后来对其的修订( N1982N2408 )也没有说明它们抛出异常的原因。除了这些论文之外,是否还有其他记录,我不知道。

不过,我可以大胆猜测一下。我们可以看到论文的初稿就抛出了异常。而且这似乎从未有过争议。这可能源于这样一种观点,即异常是指示 C++ 中操作失败的标准方法,尤其是 C++ 标准库。

一些标准库类型有其他错误机制(iostreams)。但一般来说,异常(exception)是默认情况。

关于c++ - 为什么 std::stof、std::stod 和 std::stold 处理带有异常的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34713008/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com