comment changer le répertoire de travail de l'emplacement du programme

Je veux utiliser c++ pour ouvrir un fichier sur Mac OS.

Si je lance le programme, sous Xcode, le répertoire de travail est la même chose avec le programme, ce qui est bien. Cependant, si j'essaie d'exécuter le programme dans le terminal, le répertoire de travail est toujours "Utilisateurs/nom d'utilisateur". Savez-vous comment changer le répertoire de travail de l'emplacement de ce programme?

Voici un exemple de code:

#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;
}
Pourquoi voulez-vous que le programme de l'utilisation de son propre répertoire d'installation que le répertoire courant? Il ne sera probablement pas en mesure d'y écrire (si le logiciel est installé correctement). Il pourrait être en mesure de lire les fichiers un peu plus facilement, mais c'est contestable mérite. Otoh, que, si je lance le programme à partir de $HOME/src/subdir/myprogram, je m'attends à spécifier les noms de fichiers relatifs à l'annuaire j'ai commencé à partir, non pas par rapport à /Applications/Doohickey.app/Contents/MacOS ou $HOME ou quelque chose de similaire. Bien sûr, cela dépend de ce que fait le programme...mais être prudent sur l'utilisation de chdir().
J'ai juste envie de mettre tous les fichiers ensemble. J'ai l'habitude d'utiliser windows beaucoup. Et quand je lance un programme en ligne de commande sous windows, le fichier généré par le programme est censé être dans le même emplacement du programme. Je reçois votre point de vue. Je vais y réfléchir. Merci beaucoup.
Rappelez-vous que Windows n'est pas principalement un système multi-utilisateur, et il n'y a pas une manière analogue à la Unix répertoire personnel de chaque utilisateur. Cela mène des programmes de l'éparpillement des données de tous sur la place. Sur les systèmes Unix, stockage de données quelque part sous $HOME est recommandé. Par exemple, les informations de configuration peut être dans un fichier (ou un répertoire) $HOME/.yourapp. Regardez la Pomme "OS X Human Interface Guidelines" pour où trouver des trucs sur Mac OS X.
Je vais avoir un problème similaire ici et ne peut pas fixer sur la base de cette solution. Je suis désespérée d'une solution et permettra de compenser avec une certaine réputation. stackoverflow.com/questions/40920783/...
Offre également une prime à celui qui peut m'aider à la réparer.

OriginalL'auteur Yuchen Zhong | 2012-11-05