Кроссплатформенный способ записи 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, но я бы предпочел решение, которое не требует от меня написания разного кода для разных систем.

0 ответов

Другие вопросы по тегам