我在尝试使用stringstream对象时注意到了一些事情。这里有一个无用的例子来解释这个问题:
stringstream ss ;
ss << "my string" ;
cout << ss.str() << endl ;
不等于
cout << (stringstream() << "my string").str() << endl ;
这会导致编译错误,抱怨“class std::basic_ostream”没有名为“str”的成员。
我很难解释这个问题。这对我的应用程序并不重要,但我相信这隐藏了一个有趣的c++技巧值得理解。
注意:我正在使用带有c++14的gcc。
static_cast< stringstream & >(stringstream() << "my string").str()
。或者,你知道的,使用命名变量。 - Potatoswatter