Никогда не используйте первый код .Как написано в документации по Qt, она может не работать в неанглийской среде из-за того, что кодировка имени файла не равна CFStringGetSystemEncoding()
, что возвращает основную не-юникодную кодировку пользователя.Вместо этого имя файла всегда кодируется UTF8 (с небольшим вариантом.)
const char *pathPtr = CFStringGetCStringPtr(macPath, kCFStringEncodingUTF8);
Точнее, вам нужно использовать CFStringGetFileSystemRepresentation
.
QCoreApplication::applicationDirPath()
(в основном) правильно учитывает эти тонкости, поэтому вам следует использовать последний подход, если вы хотите, чтобы ваше приложение работало на неанглийских компьютерах Mac.