gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:47:26 25 4
gpt4 key购买 nike

我在 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++ 方法。

最佳答案

事实上,问题在于 Cocoa 应用程序在它们自己的沙箱内工作,默认情况下无法写入或读取沙箱外的任何文件。

我通过初步创建一个文件并指定它的绝对路径来解决这个问题。我在 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 );

谢谢回复的人!

关于c++ - 无法访问嵌入到 Objective-C 项目中的 C++ 代码中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56239574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com