std::stringon non-Windows it is usually used to store UTF8 strings (which are the default encoding for most reasonable operating systems on this side of 2010), but it is a "dumb" container, which in the sense that it does not know or care about the bytes that you keep it. It will work for reading, storage and writing; but not for string manipulation.
IBM ICU: Unicode. C/++ * nix Windows, , , , , .
, ++, UTF8-CPP