<< 演算子 (operator<<) を文字列を直接操作するように定義することは、ostringstreams を操作してから文字列に戻すよりも洗練されているように思えます。C ++がそのままではこれを行わない理由はありますか?
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
template <class T>
string& operator<<(string& s, T a) {
ostringstream ss;
ss << a;
s.append(ss.str());
return s;
}
int main() {
string s;
// this prints out: "inserting text and a number(1)"
cout << (s << "inserting text and a number (" << 1 << ")\n");
// normal way
ostringstream os;
os << "inserting text and a number(" << 1 << ")\n";
cout << os.str();
}