无法访问嵌入到Objective-C项目中的C ++代码中的文件

时间:2019-05-21 13:37:58

标签: c++ objective-c macos file

我正在用Xcode创建一个项目,我试图将用C ++编写的逻辑和在Objective-C中处理GUI组件混合在一起。我遇到以下问题:

每当我用C ++代码打开文件流时(就像我通常在完全用C ++编写的项目中所做的那样,并且确实可以工作),该文件无法打开,并且我没有错误信息,也没有线索来处理这种情况。以下代码位于我的C ++类的方法中,没有任何问题:

std::fstream file;

file.open("file");
if (file) {
    file << "The string that is not printed to a file";
}

file.close();

如何解决文件流并使它们在混合代码项目中工作?

注意:问题不在于在单个项目中同时处理C ++和Objective-C,因为我可以使用包装对象成功调用C ++方法。

1 个答案:

答案 0 :(得分:1)

实际上,问题出在以下事实:可可应用程序在其自己的沙箱中运行,并且默认情况下无法写入或读取其中的任何文件。

我通过初步创建文件并指定其绝对路径解决了该问题。我借助getcwd() C标准库函数找到了沙箱的路径:

char cwd[100];
std::string sandbox_path = getcwd(cwd, sizeof(cwd));

std::string full_path = sandbox_path + "/" + FILE_NAME;

std::fstream source_file;
source_file.open(full_path, std::ios::in | std::ios::out | std::ios::binary );

谢谢那些回答!