Entrada / saída de arquivo STL e UTF-8. Como fazer isso?

eu usowchar_t para cadeias internas e UTF-8 para armazenamento em arquivos. Preciso usar STL para inserir / enviar texto paratela e também faça isso usando o conjunto de caracteres lituano completo.
Está tudo bem porque eu não sou forçado a fazer o mesmo porarquivos, portanto, o exemplo a seguir faz o trabalho perfeitamente:

#include <io.h>
<code>#</code>include <fcntl.h>
<code>#</code>include <iostream>
    _setmode (_fileno(stdout), _O_U16TEXT);
    wcout << L"AaĄąfl" << endl;
Mas fiquei curioso e tentei fazer o mesmo com arquivos sem sucesso. Claro que eu poderia usar entrada / saída formatada, mas isso é ...desencorajado.
    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);
Este trecho funcionaperfeitamente (embora eu não tenha certeza de como ele lida com caracteres malformados). Portanto, existe alguma maneira de:

pegueFILE* ou identificador de arquivo inteiro formar umstd::basic_*fstream?simular_setmode () nele?ampliarstd::basic_*fstream então ele lida com E / S UTF-8?

Sim, estou estudando em uma universidade e isso está relacionado às minhas tarefas, mas estou tentando descobrir isso sozinho. Não influenciará minha nota nem nada disso.

questionAnswers(5)

yourAnswerToTheQuestion