ios app使用C ++访问文件

时间:2014-08-19 22:30:43

标签: c++ ios

我正在将一个c ++应用程序移植到ios,我的应用程序需要访问一些外部文件。

关于ios app访问文件的两个问题:

  1. 代码只能访问"应用包中的文件"?

  2. 我们可以使用c ++来访问这些文件吗?怎么样?

  3. 例如,我尝试使用

    string cpp_function()
    {
        string line;
        ifstream myfile ("example");
        if (myfile.is_open()){
            getline (myfile,line);
            return line;
        }
        return "failed";
    }
    

    文件"示例"存在于与代码相同的文件夹中,但它始终返回"失败"。我的猜测:这个文件被复制到Resources文件夹中,所以当我们在模拟器或设备上运行这些代码时,它们不再在同一个地方了?

1 个答案:

答案 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);

请注意,您可以阅读,但不能写入应用程序包,但可以写入文档目录。