Открытие fstream с файлом с именем файла Unicode в соответствии с Windows с помощью компилятора не-MSVC

Я должен открыть файл как станд.:: fstream (или на самом деле любой другой станд.:: ostream), когда имя файла является именем файла "Unicode".

Под MSVC у меня есть нестандартное расширение std::fstream::open(wchar_t const *,...)? Что я могу сделать с другими компиляторами как (самый важный) GCC и вероятно компилятором Borland.

Я знаю, что CRTL обеспечивает _wfopen но это дает C FILE * интерфейс вместо io-потоков, возможно, существует нестандартный способ создать io-поток из FILE *? Есть ли любой boost::ifstream с MSVC как расширение для Windows?

10
задан Smi 17 March 2013 в 08:00
поделиться

2 ответа

Преобразуйте имя файла Unicode в строку char * , используя что-то вроде wcstombs () или WideCharToMultiByte () (что дает вам гораздо больший контроль над кодовыми страницами вовлеченный).

Затем используйте преобразованное имя файла, чтобы открыть файл.

-3
ответ дан 4 December 2019 в 02:50
поделиться

К сожалению, стандартного способа сделать это не существует, хотя C ++ 0x (1x?) Обещает это сделать. До этого вы правильно предполагали, что решение можно найти в Boost, однако библиотека, которую вы ищете, - Boost.Filesystem .

Boost.Filesystem внутренне использует широкие строки по умолчанию для своей системы универсального пути, поэтому в этом отношении нет проблем с Unicode.

7
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: