Эквивалент MSVC ++ _wrename в Linux g ++? - PullRequest
0 голосов
/ 22 июня 2011

Кто-нибудь знает, существует ли в linux g ++ эквивалент MSVC _wrename ?(эквивалент файла cstdio переименовать функцию с использованием const wchar_t * вместо const char * в качестве типа параметра для использования в Unicode)

Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 июня 2011

Дело в том, что большинство файловых систем , отличных от , кроме NTFS, хранят свои имена файлов в байтах -строк. Обычно нет явного понятия кодирования, но имена файлов должны быть строками с ненулевыми байтами, оканчивающимися на ноль. Таким образом, во всех таких системах функции файловой системы просто принимают char* аргументов для имен файлов, и вы сами должны решить, как решать проблемы с кодировкой (если они есть).

Windows особенная, потому что имена файлов в NTFS представляют собой строки с нулевым символом в конце 16-битных модулей. Это идет рука об руку с 16-битным типом wchar_t в Windows и различными функциями _w* файловой системы.

0 голосов
/ 22 июня 2011

Это зависит от платформы.Боюсь, вам придется каким-то образом преобразовать ваш const wchar_t * в const char *.В Linux я думаю, что вы можете использовать функцию iconv.

EDIT : Boost, вероятно, что-то для этого есть

...