浏览溢出函数文档。我发现溢出有以下作为返回值。
返回值:
与 EOF 不同的值(或其他特征的 traits::eof() )表示成功。
如果函数失败,则返回 EOF(或其他特征的 traits::eof() )或抛出异常。
来源:“ http://www.cplusplus.com/reference/iostream/streambuf/overflow/ ”
谁能告诉我溢出功能在哪个场景中会通过异常?任何帮助将不胜感激
浏览溢出函数文档。我发现溢出有以下作为返回值。
返回值:
与 EOF 不同的值(或其他特征的 traits::eof() )表示成功。
如果函数失败,则返回 EOF(或其他特征的 traits::eof() )或抛出异常。
来源:“ http://www.cplusplus.com/reference/iostream/streambuf/overflow/ ”
谁能告诉我溢出功能在哪个场景中会通过异常?任何帮助将不胜感激
Streambuf 是流的底层存储或通信通道的抽象。由于存储或通道可能失败的任何原因,overflow() 函数可能会失败。例如磁盘文件的磁盘错误,套接字的连接断开等。
尽管 wilx 详细说明了失败 ( EOF
) 条件,但异常条件可以是以下任一条件:http ://www.aoc.nrao.edu/php/tjuerges/ALMA/STL/html-3.4.6/classstd_1_1exception.html (可以你猜是哪一个?:) - 但std::overflow_error
如果你正在编写自己的输出流或其他东西,它应该(显然)是。
在我有问题的场景中,它失败了,因为它没有跳转下一个地址(setp 调用递增 0),因此重试使用相同的内存区域并给出分段错误。