C++ 可以使用临时stringstream对象吗?
这项工作:C++ 可以使用临时stringstream对象吗?,c++,c++11,C++,C++11,这项工作: stringstream temp; temp << i; result_stream << transform(temp.str()); 我认为它会起作用,因为第二个的的结果不起作用,因为第二个操作符尝试对C++11执行此操作,但失败了(2009年): libc++被取缔并实现了它 需要重新考虑,但不可能在2017年之前实现标准化(标准化是一个缓慢的过程)。谢谢,这是可行的。但是它看起来有点毛茸茸的,当我自己的类的一个表达式替换了i时,它就不起作用了,我
stringstream temp;
temp << i;
result_stream << transform(temp.str());
我认为它会起作用,因为第二个
的的结果不起作用,因为第二个操作符尝试对C++11执行此操作,但失败了(2009年):
libc++被取缔并实现了它
需要重新考虑,但不可能在2017年之前实现标准化(标准化是一个缓慢的过程)。谢谢,这是可行的。但是它看起来有点毛茸茸的,当我自己的类的一个表达式替换了i
时,它就不起作用了,我为这个类定义了一个friendoperatorNotice:最新的clang++编译器(9.0.0)抱怨非常量左值引用,所以我们需要static\u cast(stringstream()@Krzysztof,也许你的代码是different@M.M对不起,我没有提到我在使用MacOS。我已经复制粘贴了你的代码,编译器给了我错误x.cc:12:24:error:non-const左值引用类型“basic\u stringstream”无法绑定到临时类型“basic\u stringstream”cout@M.M我已经创建了关于该问题的新内容。po这是一个C++11问题吗?
result_stream << transform((stringstream() << i).str());
error: 'class std::basic_ostream<char>' has no member named 'str'
using std::to_string;
result_stream << transform(to_string(i));
template <typename T>
std::string to_string (const T &t) {
std::ostringstream oss;
oss << t;
return oss.str();
}
result_stream << transform(to_string(f));
struct to_string_stream {
std::ostringstream oss;
template <typename T>
auto & operator << (const T &t) { oss << t; return *this; }
operator std::string () const { return oss.str(); }
void clear () { oss.string(std::string()); }
};
to_string_stream tss;
result_stream << transform(tss << i << ':' << f);
result_stream << transform( static_cast<stringstream &>(stringstream() << i).str() );
result_stream << transform( static_cast<stringstream &>(stringstream().flush() << i).str() );
// ^^^^^^^^
result_stream << transform(static_cast<std::stringstream&>(std::stringstream() << i).str());