我正在将一个c ++应用程序移植到ios,我的应用程序需要访问一些外部文件。
关于ios app访问文件的两个问题:
代码只能访问"应用包中的文件"?
我们可以使用c ++来访问这些文件吗?怎么样?
例如,我尝试使用
string cpp_function()
{
string line;
ifstream myfile ("example");
if (myfile.is_open()){
getline (myfile,line);
return line;
}
return "failed";
}
文件"示例"存在于与代码相同的文件夹中,但它始终返回"失败"。我的猜测:这个文件被复制到Resources文件夹中,所以当我们在模拟器或设备上运行这些代码时,它们不再在同一个地方了?
答案 0 :(得分:1)
您尝试的问题是您没有在此行中包含完整的文件路径
ifstream myfile ("example");
我对C ++知之甚少,但我知道如果您想使用C标准库访问iOS中的文件,则必须这样做
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@""];
FILE *f = fopen(filePath.UTF8String, "r"); //works
FILE *f = fopen("example", "r"); //does not work
另请注意,您只能访问 应用包中的文件。您可以尝试使用Objective-C ++并通过此方法获取您要查找的文件的路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@""];
std::string *path = new std::string([filePath UTF8String]);
ifstream myfile (path);
请注意,您可以阅读,但不能写入应用程序包,但可以写入文档目录。