如何检查ostrstream是否满了



首先,我知道ostrstream被弃用了,但是在这种情况下重构为ostringstream并不是一个真正的选择。

目前,我只是检查流是否在<<操作后设置了坏位:

示例(是的,非常简化):

char* buf = new char[10];
std::ostrstream tempOut(buf, 10);
tempOut << "To many charactors to fit in the buffer";
if (tempOut.bad()) {
   // Do what needs to be done to allocate a bigger buf
}

是否有更好的方法来检查并确保坏状态是由于溢出而不是其他问题?

是否有更好的方法来检查并确保坏状态是由于溢出而不是其他问题?

调用exceptions()方法来设置将抛出哪些异常。这是c++处理错误的正确方式。你必须在知道如何解决错误的地方处理异常。

那么,我将这样做:

char* buf = new char[10];
std::ostrstream tempOut(buf, 10);
tempOut.exceptions(std::ios::badbit);
try
{
tempOut << "To many charactors to fit in the buffer";
}
catch( const std::exception & e )
{
  //resolve error
}

是否有更好的方法来检查并确保坏状态是由于溢出而不是其他问题?

不,不完全是。您必须知道哪个操作会导致哪个错误,并处理它。异常的好处是

  • 你不能忽略它们。
  • 您不必在错误发生的地方处理错误。

相关内容

  • 没有找到相关文章

最新更新