STL- und UTF-8-Dateieingabe / -ausgabe. Wie es geht

Ich benutzewchar_t für interne Zeichenfolgen und UTF-8 für die Speicherung in Dateien. Ich muss STL verwenden, um Text in @ einzugeben / auszugebeBildschir und verwenden Sie auch den vollständigen litauischen Zeichensatz.
Es ist alles in Ordnung, weil ich nicht gezwungen bin, das Gleiche für @ zu t files, also macht das folgende Beispiel den Job ganz gut:

#include <io.h>
<code>#</code>include <fcntl.h>
<code>#</code>include <iostream>
    _setmode (_fileno(stdout), _O_U16TEXT);
    wcout << L"AaĄąfl" << endl;
Aber ich wurde neugierig und habe versucht, dasselbe mit Dateien ohne Erfolg zu tun. Natürlich könnte ich formatierte Ein- / Ausgabe verwenden, aber das ist ...entmutig.
    FILE* fp;
    _wfopen_s (&fp, L"utf-8_out_test.txt", L"w");
    _setmode (_fileno (fp), _O_U8TEXT);
    _fwprintf_p (fp, L"AaĄą\nfl");
    fclose (fp);
    _wfopen_s (&fp, L"utf-8_in_test.txt", L"r");
    _setmode (_fileno (fp), _O_U8TEXT);
    wchar_t text[256];
    fseek (fp, NULL, SEEK_SET);
    fwscanf (fp, L"%s", text);
    wcout << text << endl;
    fwscanf (fp, L"%s", text);
    wcout << text << endl;
    fclose (fp);
Dieses Snippet funktioniertperfek (obwohl ich nicht sicher bin, wie es mit fehlerhaften Zeichen umgeht). Gibt es einen Weg zu:

bekommenFILE* oder Ganzzahl-Dateizugriffsnummer aus einemstd::basic_*fstream?simulate_setmode () drauf?erweiternstd::basic_*fstream so behandelt es UTF-8 I / O?

Ja, ich studiere an einer Universität und das hängt ein wenig mit meinen Aufgaben zusammen, aber ich versuche das für mich selbst herauszufinden. Es hat keinen Einfluss auf meine Note oder ähnliches.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage