gpt4 book ai didi

c++ - Qt - 访问包路径

转载 作者:太空狗 更新时间:2023-10-29 21:08:17 26 4
gpt4 key购买 nike

Qt 文档“Mac Differences”页面提供了以下用于访问应用程序包路径的代码:

CFURLRef appUrlRef = CFBundleCopyBundleURL(CFBundleGetMainBundle());
CFStringRef macPath = CFURLCopyFileSystemPath(appUrlRef, kCFURLPOSIXPathStyle);
const char *pathPtr = CFStringGetCStringPtr(macPath,CFStringGetSystemEncoding());
qDebug("Path = %s", pathPtr);
CFRelease(appUrlRef);
CFRelease(macPath);

但是,与更简单的东西相比,它的优势是什么,如下所示:

QDir dir = QDir(QCoreApplication::applicationDirPath());
dir.cdUp();
dir.cdUp();
return dir;

最佳答案

永远不要使用第一个代码。正如那里的 Qt 文档中所写,它可能无法在非英语环境中工作,因为文件名编码不是通过 CFStringGetSystemEncoding() 进行的,它返回主要的非 unicode 编码用户的。相反,文件名始终由 UTF8 编码(略有不同。)

const char *pathPtr = CFStringGetCStringPtr(macPath, kCFStringEncodingUTF8);

更准确地说,您需要使用 CFStringGetFileSystemRepresentation .

QCoreApplication::applicationDirPath()(大部分)正确地考虑了这些微妙之处,因此如果您希望您的应用程序在非英语 Mac 上运行,您应该使用后一种方法。

关于c++ - Qt - 访问包路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3489405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com