我在c ++ 03上,我刚开始接近c ++。
我想创建一个函数,在字符串流上设置一些属性并返回它(或者可以通过引用传递它)
inline stringstream get_fixed_stream(stringstream ss=stringstream("")) {
ss.precision(4);
ss.setf(ios::fixed);
return ss;
}
所以,如果我打电话:
stringstream ss = get_fixed_stream()
如果我打电话,我会收到一个新的strinstring
cout = get_fixed_stream(cout)
精度和setf设置为cout。
我收到此错误:
/usr/include/c++/4.4/streambuf:770: error: ‘std::basic_streambuf<_CharT, _Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]’ is private
/usr/include/c++/4.4/iosfwd:63: error: within this context
答案 0 :(得分:3)
std::cout
不是字符串流,不能作为一个字符串传入。
试试这个
template<typename Stream>
void fix_stream(Stream& stream){
stream.precision(4);
stream.setf(std::ios::fixed);
}
:::
fix_stream(std::cout);
std::stringstream ss;
fix_stream(ss);
答案 1 :(得分:1)
我建议使用引用(下面的&amp; ):
inline stringstream & get_fixed_stream(stringstream & ss)
{
ss.precision(4);
ss.setf(ios::fixed);
return ss;
}