¿Cuál es la diferencia entre istringstream, ostringstream y stringstream? / ¿Por qué no usar stringstream en todos los casos?

¿Cuándo usaríastd::istringstream, std::ostringstream ystd::stringstream y por qué no debería usarstd::stringstream en cada escenario (¿hay algún problema de rendimiento en tiempo de ejecución?).

Por último, ¿hay algo malo en esto (en lugar de usar una transmisión):

std::string stHehe("Hello ");

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