Qual é a diferença entre istringstream, ostringstream e stringstream? / Por que não usar stringstream em todos os casos?

Quando eu usariastd::istringstream, std::ostringstream estd::stringstream e por que eu não deveria simplesmente usarstd::stringstream em todos os cenários (existem problemas de desempenho em tempo de execução?).

Por fim, há algo de ruim nisso (em vez de usar um fluxo):

std::string stHehe("Hello ");

stHehe += "stackoverflow.com";
stHehe += "!";