Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将工作目录更改为程序的位置 我想用C++在Mac OS上打开一个文件。p>_C++_Xcode_Macos - Fatal编程技术网

如何将工作目录更改为程序的位置 我想用C++在Mac OS上打开一个文件。p>

如何将工作目录更改为程序的位置 我想用C++在Mac OS上打开一个文件。p>,c++,xcode,macos,C++,Xcode,Macos,如果我在Xcode下运行程序,工作目录与程序相同,这很好。但是,如果我尝试在终端中运行该程序,工作目录始终是Users/username。您知道如何将工作目录更改为程序的位置吗 以下是示例代码: #include <iostream> #include <fstream> using namespace std; int main (int argc, const char * argv[]) { char * dir = getcwd(NULL, 0);

如果我在Xcode下运行程序,工作目录与程序相同,这很好。但是,如果我尝试在终端中运行该程序,工作目录始终是Users/username。您知道如何将工作目录更改为程序的位置吗

以下是示例代码:

#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, const char * argv[])
{
    char * dir = getcwd(NULL, 0); 
    cout << "Current dir: " << dir << endl;

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

您可以使用chdir,请参见此处:


或者如果您总是可以发出一个系统调用stdlib.h:。这不会是可移植的,但它可能足以满足您的需要。

您可以在Xcode中为您的项目设置自定义工作目录。在Xcode 4中,从项目窗口工具栏的“方案”菜单中选择“编辑方案”,以打开“方案编辑器”。从项目编辑器的左侧选择运行步骤。单击方案编辑器顶部的“选项”按钮。选中“使用自定义工作目录”复选框。单击文本字段右侧的按钮以选择工作目录

在方案调试设置的工作目录中使用$PROJECT_DIR值:


这是一篇非常古老的文章,更新了Xcode 2020年9月12日的一些信息

第一步。Xcode->Product->Scheme->编辑方案或创建新方案

步骤2运行调试,工作目录选中标记并输入$PROJECT\u DIR作为起点


但是你知道如何获取正在运行的应用程序的路径吗?argv[0]始终包含路径和程序名,当然,在argv[0]上关联可能不是一个好主意,没有标准规定必须始终存在完整路径,可能只是启动它的命令的第一部分。解决方案是使用GetModuleFileName。。。或者readlink/proc/self/exe,…为什么希望程序使用自己的安装目录作为当前目录?如果软件安装正确,它可能无法在那里写入。它或许可以更方便地读取文件,但这一点值得商榷。OTOH,如果我从$HOME/src/subdir/myprogram启动程序,我希望指定相对于启动它的目录的文件名,而不是相对于/Applications/Doohickey.app/Contents/MacOS或$HOME或类似的目录。当然,这取决于程序的功能……但是使用chdir时要小心。我只想把所有的文件放在一起。我过去经常使用windows。当我在windows下运行命令行程序时,该程序生成的文件应该位于程序的同一位置。我明白你的意思。我会考虑的。非常感谢。请记住,Windows主要不是一个多用户系统,每个用户都没有类似于Unix主目录的系统。这导致程序将数据分散到各地。在类Unix系统上,建议将数据存储在$HOME以下的位置。例如,配置信息可能位于文件或目录$HOME/.yourapp中。看看苹果的“OS X人机界面指南”,在Mac OS X上的什么地方可以找到东西。我在这里遇到了一个类似的问题,无法基于此解决方案解决。我迫切需要一个解决方案,并将以一些声誉来补偿。还向任何可以帮助我修复它的人提供奖励。对于Xcode 5:Product->Scheme->Edit Scheme->Run appname->Options,您可以在那里找到工作目录选项。我遇到了类似的问题,无法基于此解决方案修复它。我迫切需要一个解决方案,并将以一些声誉来补偿。我还将向任何能帮我修复它的人提供一笔赏金。我一整年都在寻找这个。