Wie man Unicode mit STL-Strings und Streams liest / speichert

Ich muss mein Programm so ändern, dass es Unicode akzeptiert, das von UTF-8 und den verschiedenen UTF-16- und UTF-32-Codierungen stammen kann. Ich weiß nicht viel über Unicode (obwohl ich Joel Spolskys @ gelesen haArtike und dieWikipedia Seite).

Jetzt benutze ich einstd::istream und meine Eingabe lesenchar durchchar und dann speichern (falls erforderlich) in einemstd::string. Ich möchte gern

modifizieren Sie dies (mit möglichst geringem Aufwand), um die obigen Kodierungen zu unterstützen, undKonfigurieren Sie, wie die oben genannten Kodierungen getestet werden sollen (ich bin ein Weißbrot-Amerikaner und weiß nicht wirklich, wie ich eine Beispieltextdatei in einer anderen Kodierung erstellen soll), und im IdealfallTun Sie dies plattformübergreifend.

Auch wenn möglich, möchte ich so viel Platz wie möglich sparen (wenn wir also nicht mehr als ein Byte / Zeichen benötigen, verwenden wir es nicht). Soweit ich weiß, bedeutet dies das Speichern in UTF-8, was in Ordnung ist, aber ich kenne keinen Standard-String, der dies tut (nach dem, was ich verstehe,wchar_t hat implementierungsdefinierte Größe und Kodierung.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage