在C ++文件中使用iPhone资源

时间:2010-02-08 07:17:36

标签: c++ iphone

我想知道如何从C ++文件打开应用包中的文件。

即。我有一个文件“manifest.xml”,它开始被复制到应用程序包中。我需要一种从C ++到加载此文件的方法。我认为这将涉及在Obj-C代码中设置路径,以便文件位于工作目录中。

2 个答案:

答案 0 :(得分:6)

您必须使用CoreFoundation(C)或Foundation(ObjC)。您可以使用CFBundle / NSBundle函数访问应用包中的每个对象(“主要包”)。

在CoreFoundation中你做了(省略了NULL检查):

CFURLRef manifest_url = CFBundleCopyResourceURL(CFBundleGetMainBundle(),
                                                CFSTR("manifest"), CFSTR("xml"),
                                                NULL);
char manifest_path[1024];
CFURLGetFileSystemRepresentation(manifest_url, true,
                                 manifest_path, sizeof(manifest_path));
CFRelease(manifest_url);

FILE* f = fopen(manifest_path, "r"); // etc.

在基金会,你做

NSString* manifest_string = [[NSBundle mainBundle] pathForResource:@"manifest"
                                                            ofType:@"xml"];
const char* manifest_path = [manifest_string fileSystemRepresentation];

FILE* f = fopen(manifest_path, "r");  // etc.

答案 1 :(得分:2)

OS X应用程序的核心是Unix应用程序。

应用程序如何找到其父目录并在Linux上打开文件?您可以在OS X上以相同的方式在C ++中执行此操作。

现在,如果你愿意做一些Cocoa或CoreFoundation调用,你可以让你的生活更轻松,但如果你的要求是只能使用C ++调用,那么任务就没有了任何其他Unix-sytle系统。