流式传输是stringstream
libstdc++ 扩展吗?该程序使用and编译gcc-4.2
,gcc-4.7-2 (using -std=c++03)
和 clang 3.2 (感谢 Andy Prowl,请参阅评论)。它不能使用和编译。-std=c++11
libstdc++
clang 3.2
-std=c++11
-stdlib=libc++
#include<iostream>
#include<sstream>
int main() {
std::stringstream s; s << "b";
std::cout << "ss: " << s << std::endl;
return 0;
}
通过查看 ofstream 的构造函数,它可以采用 astd::basic_streambuf<CharT, Traits>*
或 a basic_ostream& st
。stringstream 是 a std::basic_istream
,但是两者都是,std::basic_ios<CharT, Traits>
所以我猜它应该可以工作。
以下更改使代码在 clang 下编译:
std::cout << "ss: " << s.str() << std::endl;
正确的方法是什么?cout << s;
还是cout << s.str();
?