【问题标题】:Query regarding overflow function of streambuf关于streambuf溢出功能的查询
【发布时间】:2010-09-20 06:29:45
【问题描述】:

浏览溢出函数文档。我发现溢出有以下作为返回值。

返回值:

与 EOF 不同的值(或其他特征的 traits::eof() )表示成功。

如果函数失败,则返回 EOF(或其他特征的 traits::eof())或抛出异常。

来源:“http://www.cplusplus.com/reference/iostream/streambuf/overflow/

谁能告诉我溢出函数在哪个场景中会通过异常? 任何帮助将不胜感激

【问题讨论】:

    标签: c++ streambuf


    【解决方案1】:

    Streambuf 是流的底层存储或通信通道的抽象。由于存储或通道可能失败的任何原因,overflow() 函数可能会失败。例如。磁盘文件的磁盘错误,套接字的连接断开等。

    【讨论】:

      【解决方案2】:

      虽然 wilx 详细说明了失败 (EOF) 条件,但异常条件可以是以下之一:http://www.aoc.nrao.edu/php/tjuerges/ALMA/STL/html-3.4.6/classstd_1_1exception.html(你能猜出是哪一个吗?:) -- 但它应该(显然)是 std::overflow_error if您正在编写自己的输出流或其他内容。

      【讨论】:

      • 我不认为这是溢出错误,因为该异常用于“抛出以指示算术溢出。”。我将尝试检查异常并查看异常类型是什么(我认为它是 std::ios_base::failure)。感谢您和 wilx 的帮助。
      【解决方案3】:

      在我的问题场景中,它失败了,因为它没有跳转下一个地址(setp 调用递增 0),因此重试使用相同的内存区域并给出分段错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 2015-05-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多