我想使用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;
}
爲什麼你要程序使用它自己的安裝目錄爲當前目錄?它可能不會寫在那裏(如果軟件安裝正確)。它可能能夠更方便地閱讀文件,但這是值得商榷的。 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上的位置。 –