В проекте, над которым я работаю, я имею дело с довольно многими строковыми манипуляциями; строки считываются из двоичных файлов вместе с их кодировкой (которая может быть одиночным или двойным байтом). По сути, я прочитал строковое значение как vector<char>
, прочитал кодировку, а затем конвертировал все строки в wstring
для согласованности.
Это работает достаточно хорошо, однако сами имена файлов могут быть двухбайтовыми символами. Я полностью зациклен на том, как фактически открыть входной поток. В CI будет использоваться функция _wfopen
, проходящая wchar_t* path
, но wifstream
, похоже, ведет себя по-другому, поскольку она специально предназначена для чтения двухбайтовых символов из файла, а не для чтения одиночных байтов из файла с двухбайтовым именем файла.
Каково решение этой проблемы?
Изменить: Поиск в сети, похоже, нет никакой поддержки для этого вообще в стандартном С++ (например, см. это обсуждение). Однако мне интересно, добавляет ли С++ 11 что-то полезное в этой области.