我有一个函数可以传递给它的ostream。我需要测试ostream以确保它能够正常工作。我将print语句放在带有catch语句的try块中以捕获所有异常。现在要测试这是否有效,我需要一些帮助来创建一个糟糕的ostream来传递函数。
我试过了:
filebuf buffer;
ostream& out = ostream(&buffer);
test1.print(out);
但是当我测试它时,我无法收到要打印的错误消息。什么是创建一个坏的ostream传递给函数的更好方法。
另外,有没有比使用try-catch块更好的方法来检查ostream?
答案 0 :(得分:2)
ofstream
如何对任何文件不开放?
答案 1 :(得分:2)
Streams一般不会在异常工作时抛出异常,因此无论操作是否成功,我都不希望打印出错误消息。
ios
基类有一个名为exceptions
的函数可以用来控制它,但编写一个改变参数状态的函数是相当反社会的,所以你可能必须确保恢复它(即使它抛出异常...)
在流上测试操作成功的常用方法是使用if
。如果一切正常,则流计算为真值,否则为false值 - 我指的是关于条件的值为true / false的值,而不是bool
值true
或{{ 1}}。
准确地说,如果设置了failbit或badbit,则为false。当且仅当至少设置了其中一个操作时,最后一个操作“不起作用”。