需要如何测试传递给函数的ostream的帮助/建议

Need help/advice on how to test an ostream passed to a function

本文关键字:函数 ostream 帮助 建议 何测试 测试      更新时间:2023-10-16

我有一个函数,它获得传递给它的ostream。我需要测试ostream以确保它能工作。我将print语句放在try块中,并使用catch语句捕获所有异常。现在要测试这是否有效,我需要一点帮助来创建一个坏的ostream来传递函数。

我试过了:

filebuf buffer;
ostream& out = ostream(&buffer);
test1.print(out);

但是当我测试它时,我不能得到我的错误信息打印。有什么更好的方法来创建一个坏的ostream传递给函数呢?

还有,是否有比使用try-catch块更好的方法来检查ostream ?

不能打开任何文件的ofstream呢?

流在不工作时通常不会抛出异常,所以无论操作成功与否,我都不希望打印错误消息。

ios基类有一个叫做exceptions的函数可以用来控制它,但是写一个像这样改变参数状态的函数是相当反社会的,所以你可能必须确保恢复它(即使它抛出一个异常…)

通常测试流上操作是否成功的方法是使用if。如果一切正常,流计算结果为真值,否则计算结果为假值——我指的是就条件而言为真/假的值,而不是booltruefalse

精确地说,如果设置了failbit或badbit,则为false。

最后一个操作"没有工作"当且仅当至少设置了其中一个。