Я должен открыть файл как станд.:: fstream (или на самом деле любой другой станд.:: ostream), когда имя файла является именем файла "Unicode".
Под MSVC у меня есть нестандартное расширение std::fstream::open(wchar_t const *,...)
? Что я могу сделать с другими компиляторами как (самый важный) GCC и вероятно компилятором Borland.
Я знаю, что CRTL обеспечивает _wfopen
но это дает C FILE *
интерфейс вместо io-потоков, возможно, существует нестандартный способ создать io-поток из FILE *
? Есть ли любой boost::ifstream
с MSVC как расширение для Windows?
Преобразуйте имя файла Unicode в строку char *
, используя что-то вроде wcstombs ()
или WideCharToMultiByte ()
(что дает вам гораздо больший контроль над кодовыми страницами вовлеченный).
Затем используйте преобразованное имя файла, чтобы открыть файл.
К сожалению, стандартного способа сделать это не существует, хотя C ++ 0x (1x?) Обещает это сделать. До этого вы правильно предполагали, что решение можно найти в Boost, однако библиотека, которую вы ищете, - Boost.Filesystem .
Boost.Filesystem внутренне использует широкие строки по умолчанию для своей системы универсального пути, поэтому в этом отношении нет проблем с Unicode.