如何将工作目录更改为程序的位置

时间:2012-11-05 03:18:08

标签: c++ xcode macos

我想用c ++在Mac OS上打开文件。

如果我在Xcode下运行程序,工作目录与程序相同,这很好。但是,如果我尝试在终端中运行程序,则工作目录始终是“用户/用户名”。你知道如何将工作目录更改为程序的位置吗?

以下是示例代码:

#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;
}

4 个答案:

答案 0 :(得分:10)

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

enter image description here

答案 1 :(得分:3)

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

enter image description here

答案 2 :(得分:1)

您可以使用chdir(),请参阅此处:Change the current working directory in C++

或者,如果您总是可以发出系统调用(stdlib.h):http://www.cplusplus.com/reference/clibrary/cstdlib/system/。这不是便携式的,但它可能足以满足您的需求。

答案 3 :(得分:0)

这是一个非常古老的帖子-更新了Xcode 12的一些信息(2020年9月)

步骤1)。 Xcode->产品->方案->编辑方案(或创建一个新方案)

Screenshot where to find EditScheme

第2步:运行(调试),工作目录(选中标记),然后输入$(PROJECT_DIR)作为起点。

What item to change/edit in the scheme