Чтение / запись файла с именем файла Unicode с простым C ++ / Boost
Я хочу читать / записывать файл с именем файла в юникоде, используя файловую систему boost, языковой стандарт boost в Windows (mingw) (в конце должен быть независимым от платформы).
Это мой код:
#include <boost/locale.hpp>
#define BOOST_NO_CXX11_SCOPED_ENUMS
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
namespace fs = boost::filesystem;
#include <string>
#include <iostream>
int main() {
std::locale::global(boost::locale::generator().generate(""));
fs::path::imbue(std::locale());
fs::path file("äöü.txt");
if (!fs::exists(file)) {
std::cout << "File does not exist" << std::endl;
}
fs::ofstream(file, std::ios_base::app) << "Test" << std::endl;
}
fs::exists
действительно проверяет файл с именемäöü.txt
, Но записанный файл имеет названиеäöü.txt
.
Чтение дает ту же проблему. С помощьюfs::wofstream
тоже не помогает, так как это просто обрабатывает широкий ввод.
Как я могу это исправить с помощью C ++ 11 и повысить?
Редактировать: Сообщение об ошибке опубликовано:https://svn.boost.org/trac/boost/ticket/9968
Чтобы уточнить для награды: С Qt все довольно просто, но я бы хотел кроссплатформенное решение, использующее только C ++ 11 и Boost, без Qt и ICU.