Вы можете использовать UTF8-CPP для простого преобразования файла из UTF-32 в UTF-16:
#include <fstream>
#include <iterator>
#include <utf8.h>
int main(int argc, char** argv) {
std::ifstream file("source.txt");
std::string intermediate;
std::wstring result;
utf8::utf32to8(std::istreambuf_iterator<char>(file),
std::istreambuf_iterator<char>(),
std::back_inserter(intermediate));
utf8::utf8to16(intermediate.begin(),
intermediate.end(),
std::back_inserter(result));
}
К сожалению, нет utf8::utf32to16
, хотя, возможно, и должно быть.