Я устанавливаю путь к файлу на жестком диске, используя следующий интерфейс:
void setPath(const char* path);
Этот путь будет использоваться для базового файлового ввода-вывода.
Если я, например, предоставляю путь, содержащий китайские символы (например, через QString::toUtf8()), это нормально работает для Unix, но, конечно, не для Windows из-за внутреннего использования API wchar/wstring.
Сейчас я ищу элегантный способ сделать этот интерфейс совместимым с UTF-8 как в системах на базе Windows, так и в Unix. Есть ли способ избежать широкого API в системах на базе Windows и продолжать использовать std::string и std::ofstream()?
После просмотра boost::locale мне кажется, что это возможность обрабатывать кодировку UTF-8. Будет ли это путь (например, замена std::ofstream его аналогами boost::ofstream()?)
const std::locale loc = generator.generate(std::locale(), "zh_CN.UTF-8");
std::locale::global(loc);
std::cout.imbue(std::locale());
boost::filesystem::path::imbue(std::locale())
Вся помощь приветствуется.