我尝试以下代码:
ostringstream oss;
streambuf *psbuf, *backup;
backup = oss.rdbuf();
psbuf = cout.rdbuf();
oss.rdbuf(psbuf);
oss << things << endl;
oss.rdbuf(backup);
但不幸的是,我收到了这个错误:
error: too many arguments to function call, expected 0, have 1
oss.rdbuf(backup);
但是 rdbuf 有两个重载:
获取 (1) basic_streambuf<char_type,traits_type>* rdbuf() const;
设置 (2) basic_streambuf<char_type,traits_type>* rdbuf (basic_streambuf<char_type,traits_type>* sb);
是的,我知道它说basic_streambuf
但它实际上只是一个 typedef typedef basic_streambuf<char> streambuf;
,所以它应该可以工作。为什么它不起作用?