ストリーミングはstringstreamlibstdc++ 拡張機能ですか? このプログラムはgcc-4.2、gcc-4.7-2 (using -std=c++03)、および clang 3.2 で and を使用して-std=c++11コンパイルされますlibstdc++(Andy Prowl のおかげです。コメントを参照してください)。andを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 のコンストラクターを見ると、std::basic_streambuf<CharT, Traits>*またはを取ることができますbasic_ostream& st。文字列ストリームは ですがstd::basic_istream、どちらもstd::basic_ios<CharT, Traits>そうなので、うまくいくはずです。
次の変更により、コードは clang でコンパイルされます。
std::cout << "ss: " << s.str() << std::endl;
それを行う正しい方法は何ですか?cout << s;またはcout << s.str();?