
AMDG Artyom wrote:
I've recently written a small library that allows writing platform independent Unicode aware applications transparently.
Problem, basic stuff like opening a file, deleting it, is generally accepted for granted and indeed, STL provides std::fstream and C library provides FILE* API like std::fopen, std::remove, std::rename.
However, this API is broken under Windows any time we talk about some basic localization like using Unicode file names.
Unlike all other Windows development moved to redesigning API to wide characters instead of adapting backward compatible UTF-8 locales into the core system.
Result: it is total nightmare to write any kind of Unicode aware cross platform programs.
Even when trying to use wide strings and calling _wfopen or _wremove where needed is not enough, as there is no simple replacement for std::fstream. MSVC provided non-standard extension where std::fstream::open() receives wide string, but this is not accepted by many other compilers including MinGW gcc that has shared libstdc++ over multiple platforms. Not talking about that standard does not define std::fstream::open(wchar_t const *,...) (and not in Tr1 as well).
What about boost::filesystem::path? In Christ, Steven Watanabe