-display them with std::cout
-write them in a file
-use them in a 3rd party library...
Well, you
can print them in any basic_ostream object since there is a corresponding << op:
template <class CharT, class Traits, class Allocator>
std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& os,
const std::basic_string<CharT, Traits, Allocator>& str);
So using cout or fstream is not a problem.
Regarding 3rd party lib, I think it isn't an argument since anybody can find a 3rd party lib that is not compatible.
Having said that, with c++11 we have std::u16string and std::u32string so it might be a good idea to use them (with std::string for utf8) when we switch to c++11. Of course, we might change more than just the types.