Codificar / Decodificar std :: string a UTF-16

Tengo que manejar un formato de archivo (tanto leer como escribir en él) en el que las cadenas están codificadas en UTF-16 (2 bytes por carácter). Dado que los caracteres que están fuera de la tabla ASCII rara vez se usan en el dominio de la aplicación, todas las cadenas en mi modelo de C ++ se almacenan en instancias de std :: string (codificado en UTF-8).

Estoy buscando una biblioteca (buscada en STL y Boost sin suerte) o un conjunto de funciones C / C ++ para manejar esta conversión std :: string <-> UTF-16 al cargar o guardar en formato de archivo (modelado en realidad como un bytestream) que incluye la generación / reconocimiento de pares sustitutos y todas esas cosas de Unicode (ciertamente no soy experto) ...

¿Alguna sugerencia? ¡Gracias!

EDITAR: olvidó mencionar que debe ser multiplataforma (Win / Mac) y no puede usar C ++ 11.

Respuestas a la pregunta(3)

Su respuesta a la pregunta