【发布时间】:2016-10-17 09:15:17
【问题描述】:
任何人都可以建议一种方法来获得一个 null std::ostringstream,避免对使用<< 传递给它的参数做任何工作吗?
这里有两个相关的帖子 Implementing a no-op std::ostream 和 Printing to nowhere with ostream ,到目前为止最有希望的解决方案是 https://stackoverflow.com/a/760353/826203 ,但是在测试它时
int main() {
onullstream os;
os << 666;
// std::ostringstream & oss = os; // error C2440: 'initializing' : cannot convert from 'onullstream' to 'std::ostringstream &'
oss << "hello, world";
}
但是,它只能像os<<666 一样使用,但不能 像std::ostringstream & 那样使用。有什么办法吗?
【问题讨论】:
-
您会收到错误消息,因为
std::ostringstream和onullstream是继承树的不同部分。虽然两者都继承自std::ostream,但它们在其他方面无关。相反,我认为在这里使用std::ostringstream的要求是错误的要求,您并不真正需要。例如,如果您有一个使用流调用的函数,您将需要一个std::ostream引用。然后你可以传递一个std::ostringstream对象或一个onullstream对象。