gpt4 book ai didi

C++ Boost io 流,错误处理

转载 作者:太空狗 更新时间:2023-10-29 23:10:18 24 4
gpt4 key购买 nike

是否可以使自定义流在错误方面像标准流一样工作?那就是默认使用 good/fail/bad/eof 位而不是异常(exception)?

boost 文档只提到为流错误抛出 std::failure 并让其他错误传播(例如,尝试分配缓冲区的 badalloc),但是 boost 代码似乎没有捕捉到这些,而是​​依赖于用户代码来处理它们,但我现有的所有代码都依赖于 good()、bad() 等方法和 clear() 方法,以防出错后需要重试。

最佳答案

来自 http://www.trip.net/~bobwb/cppnotes/lec08.htm

可以使用以下方式设置错误状态:

无效清除(iostate = 0);

默认值零导致 ios_base::goodbit 被设置。

清除();

因此等同于

清除(0);

相当于

清除(ios_base::goodbit);

注意 ios_base::goodbit 是一个非零值。 clear() 可用于将其他位之一设置为程序员针对特定对象的 operator>>() 代码的一部分。例如:

if (bad_char) is.clear(ios_base::badbit);//设置 istream 的 badbit

关于C++ Boost io 流,错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152913/

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