Como ler / armazenar unicode com strings e fluxos STL

Preciso modificar meu programa para aceitar Unicode, que pode vir de qualquer uma das codificações UTF-8 e UTF-16 e UTF-32. Eu realmente não sei muito sobre Unicode (embora eu tenha lido Joel Spolsky'sartigo e aPágina da Wikipedia)

Agora eu estou usando umstd::istream e lendo minha entradachar porchare, em seguida, armazenando (quando necessário) em umstd::string. Eu gostaria de

modifique isso (com o mínimo de esforço) para suportar as codificações acima edescobrir como testar as codificações acima (eu sou meio americano de pão branco, e realmente não sei nem como criar um arquivo de texto de amostra em outra codificação) e, idealmente,faça isso de uma maneira multiplataforma.

Além disso, se possível, eu gostaria de economizar espaço o máximo possível (por isso, se não precisarmos de mais de um byte / caractere, não o usaremos). Pelo que entendi, isso significa armazenar em UTF-8, o que é bom, mas não conheço uma string padrão que faça isso (pelo que entendi,wchar_t possui tamanho e codificação definidos pela implementação).

questionAnswers(2)

yourAnswerToTheQuestion