Кроссплатформенный способ записи Unicode в файл
Я использую Boost 1.60.0 в Windows, но пишу кроссплатформенную программу. Я пытаюсь сохранить имена файлов в файл и прочитать их позже. Файл может быть текстовым или двоичным, и его кодировка не имеет значения. Я получаю имена файлов, перебирая каталог с помощью boost::filesystem::directory_iterator.
Имена файлов могут содержать символы Unicode, и я не могу найти кросс-платформенный способ их записи или чтения.
В Linux я могу сделать это с помощью ofstream и ifstream, используя операторы << и >> класса boost:: filesystem:: path.
В Windows, однако, мне нужно использовать wofstream и wifstream и наполнить их языком UTF-8, например так:
std::wofstream outFile("./outfile");
boost::locale::generator gen;
outFile.imbue(gen("UTF-8"));
А затем используйте << и >> операторы.
Итак, в настоящее время у меня есть разный код для Windows и для Linux, но я бы предпочел решение, которое не требует от меня написания разного кода для разных систем.