gpt4 book ai didi

c++ - 如何检查ostrstream是否已满?

转载 作者:搜寻专家 更新时间:2023-10-31 01:09:44 25 4
gpt4 key购买 nike

首先,我知道 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
}

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

最佳答案

Is there a better way to check an make sure the bad state is because of an overflow and not some other issue?

调用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
}

Is there a better way to check an make sure the bad state is because of an overflow and not some other issue?

不,不是真的。您必须知道哪个操作会导致哪些错误,并加以处理。异常的好处是

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

关于c++ - 如何检查ostrstream是否已满?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16721294/

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