我正在用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 ++方法。
答案 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 );
谢谢那些回答!