5

我想使用 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

4 回答 4

11

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

在此处输入图像描述

于 2013-03-21T00:38:55.907 回答
3

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

在此处输入图像描述

于 2012-11-05T18:43:59.577 回答
2

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

第1步)。Xcode -> Product -> Scheme -> Edit Scheme(或新建一个)

截图在哪里可以找到 EditScheme

步骤 2) RUN(DEBUG),Working Directory(Checkmark) 并输入 $(PROJECT_DIR) 作为起点。

方案中要更改/编辑的项目

于 2020-09-26T03:46:38.743 回答
1

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

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

于 2012-11-05T03:35:30.167 回答