gpt4 book ai didi

c++ - Xcode 应用程序不再从应用程序存储的文件夹中读取输入

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:09 27 4
gpt4 key购买 nike

标题有点啰嗦,但基本上,我编写了一个应用程序,可以将其输入和输出读写到文本文件。在整个过程中,它会直接在与我的 Xcode 派生数据 -> 项目 -> 构建 -> 产品 -> 调试文件夹相同的目录中读取和写入文件。这是所有内容被写入和读取的地方。我没有为应用程序设置自定义路径,所以它只是保存在应用程序所在的位置。有史以来第一次,我运行了 Apple 的 Instruments 应用程序,尝试学习如何使用分析器。在 Instruments 中选择此应用程序作为目标后不久,我返回 Xcode 应用程序以进一步运行该程序。在 Xcode 中一切正常。它从文件中读取并打印到与文件夹相同位置的文件,但是如果我尝试通过单击文件并打开终端来运行实际程序本身,它不再读取或打印到应用所在的目录in. 相反,它是从我的主文件夹中打印和读取的。我不知道发生了什么变化或导致它发生变化的原因,但我希望这是一个简单的修复。我希望应用程序再次从其所在的目录中读取文件并打印文件。我不确定它是 Xcode 设置还是终端设置。

如有任何帮助,我们将不胜感激。

更新 1:试过但没有成功:

how to change the working directory to the location of the program

目录字段是空白的,所以我认为这会是解决方案,但按照建议填写它并不能缓解问题。

更新 2:

刚刚尝试删除首选项文件,仍然没有解决办法。我愿意给某人名誉。我没有很多,因为我是新成员,但我会把这个人认为公平的东西给解决它的人。我很绝望,真的不想等 2 天才能解决这个问题。

更新 3:

尝试将方案部分的“配置文件(发布)-> 选项”区域中的默认路径更改为更新 1 中建议的默认变量。不走运。我开始失去理智。

更新 4:

我已经尝试完全删除该方案并制作一个新方案,希望该方案可能有问题,但这并没有解决问题。在 Xcode 中运行应用程序时输入和输出仍在使用工作目录,而在调试文件夹中运行可执行文件时使用主文件夹。

更新 5:

刚刚在较旧的 iMac 和 Xcode 设置(OS 10.8.5 和 Xcode 5.1.1)上对此进行了测试,它似乎工作正常,可以读取和写入调试文件夹中应用程序的当前工作目录。

最佳答案

无论出于何种原因,https://stackoverflow.com/a/15537436/1035008 建议的解决方案不再有效。可能在 Xcode 8.1 中损坏。但这似乎有效:

#include <iostream>
#include <fstream>
#include <unistd.h>

using namespace std;

int main (int argc, const char * argv[])
{
// argv[0] returns the full path to the program, in my case "/Users/yuchen/Library/Developer/Xcode/DerivedData/../Debug/test
string directory(argv[0]);
// And we want to get rid of the program name `test`
directory = directory.substr(0, directory.find_last_of("/"));
// Point the directory to the program directory
chdir(directory.c_str());

cout << "Current directory is: " << getcwd(NULL, 0) << endl; // /Users/yuchen/Library/Developer/Xcode/DerivedData/../Debug/

ifstream fin("hi.txt");
if (fin.is_open()) cout << "File is Open" << endl;
else cout << "File is not open" << endl;
fin.close();

return 0;
}

另见 SOSO .希望这可以帮助。

关于c++ - Xcode 应用程序不再从应用程序存储的文件夹中读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40920783/

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