I've heard doing stuff like this with the STL is bad... can any one explain why?

Code:
string &operator += ( string & st, const int & i ) {

  std::stringstream s;
  s << st << i;
  st = s.str( );

  return st;

}