Более простой подход (чем использование сырого Win32 API MultiByteToWideChar) заключается в использовании помощников преобразования ATL , например CA2CW . Вы можете указать CP_UTF8 в качестве кодовой страницы (второй параметр в конструкторе) для преобразования из Unicode UTF-8 в Unicode UTF-16:
CreateDirectoryW(
CA2W( utf8Name, CP_UTF8 ) // convert from UTF-8 to UTF-16
... // other stuff
);
Обратите внимание, что в сборках Unicode (которые должны быть по умолчанию в наши дни), CreateDirectory просто расширяется до CreateDirectoryW, поэтому я бы просто отбросил конечную букву "W" и использовал (IMHO, более читаемый) CreateDirectory:
CreateDirectory(
CA2W( utf8Name, CP_UTF8 ) // convert from UTF-8 to UTF-16
... // other stuff
);