Saya mengatur jalur ke file di harddisk menggunakan antarmuka berikut:
void setPath(const char* path);
Jalur ini akan digunakan untuk I/O file dasar.
Jika saya misalnya menyediakan jalur yang berisi karakter Cina (misalnya melalui QString::toUtf8()), ini berfungsi dengan baik untuk Unix, tetapi tentu saja tidak untuk Windows karena penggunaan internal API wchar/wstring.
Saya sekarang mencari cara elegan untuk membuat antarmuka UTF-8 ini kompatibel pada sistem berbasis Windows dan Unix. Apakah ada cara untuk menghindari API lebar pada sistem berbasis Windows dan tetap menggunakan std::string dan std::ofstream() ?
Setelah melihat boost::locale, bagi saya ini tampaknya merupakan kemungkinan untuk menangani pengkodean UTF-8. Apakah ini cara yang harus dilakukan (misalnya mengganti std::ofstream dengan 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())
Semua bantuan dihargai.