2012-11-05 2 views
4

Mac OS에서 파일을 여는 데 C++을 사용하고 싶습니다.작업 디렉토리를 프로그램 위치로 변경하는 방법

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; 
} 
+0

이 왜이 프로그램이 현재 디렉토리로 자신의 설치 디렉토리를 사용 하시겠습니까? 아마도 거기에 쓸 수 없을 것입니다 (소프트웨어가 제대로 설치 되었다면). 파일을 좀 더 편리하게 읽을 수는 있지만 논쟁의 여지가 있습니다. OTOH,'$ HOME/src/subdir/myprogram'에서 프로그램을 실행하면,'/ Applications/Doohickey.app/Contents/MacOS' 또는 '$ HOME' 또는 비슷한 것. 물론 그것은 프로그램이 무엇을하는지에 달려 있지만'chdir()'사용에 대해서는 조심해야합니다. –

+0

나는 모든 파일을 함께 넣기를 원한다. 나는 창문을 많이 사용했다. Windows에서 명령 줄 프로그램을 실행할 때 해당 프로그램에 의해 생성 된 파일은 프로그램의 동일한 위치에 있어야합니다. 나는 당신의 요지를 얻는다. 나는 그것에 대해 생각합니다. 매우 감사합니다. –

+0

Windows는 주로 다중 사용자 시스템이 아니며 각 사용자의 Unix 홈 디렉토리에 대한 아날로그가 없음을 기억하십시오. 이로 인해 프로그램은 모든 곳에서 데이터를 분산시킵니다. 유닉스 계열 시스템에서는 $ HOME 아래 어딘가에 데이터를 저장하는 것이 좋습니다. 예를 들어, 설정 정보는'$ HOME/.yourapp' 파일 (또는 디렉토리)에있을 수 있습니다. Mac OS X에서 어디에서 물건을 찾을 수 있는지 Apple 'OS X 휴먼 인터페이스 가이드 라인'을보십시오. –

답변

9

는 계획 디버그 설정에서 작업 디렉토리의 값 $(PROJECT_DIR)을 사용

enter image description here

+0

** Xcode 5 ** ** : 제품 -> 스키마 -> 스키마 편집 -> 실행 "appname"-> Options를 선택하면 "Working Directory"옵션을 찾을 수 있습니다. – MondKin

+0

나는 비슷한 문제가있어이 솔루션을 기반으로 해결할 수 없습니다. 나는 해결책이 절실히 필요하며, 평판을 보완 할 것이다. http : // stackoverflow.com/questions/40920783/xcode-app-no-longer-reads-the-folder-the-app-in-stores- –

+0

나는 또한 누구든 나를 도와 줄 수있는 사람에게 현상금을 제공 할 예정입니다. 그것. –

1

당신은 CHDIR을 (사용할 수 있습니다) 여기를 참조 : Change the current working directory in C++.

또는 항상 시스템 호출 (stdlib.h)을 발행 할 수있는 경우 : http://www.cplusplus.com/reference/clibrary/cstdlib/system/. 이것은 휴대용이 아니지만 필요한만큼 충분할 수 있습니다.

+0

하지만 실행중인 앱의 경로를 얻는 방법을 알고 있습니까? –

+0

'argv [0]'에는 항상 경로와 프로그램 이름이 포함되어 있습니다. – llakais

+0

argv [0]에 의존하는 것이 좋지 않을 수도 있습니다. 항상 전체 경로가 있어야한다는 표준은 없습니다. 그것을 시작한 명령의 첫 부분 일뿐입니다. 해결책은'GetModuleFileName (...)'또는'readlink ("/ proc/self/exe", ...)' – Youda008

3

Xcode에서 프로젝트의 사용자 지정 작업 디렉토리를 설정할 수 있습니다. Xcode 4에서는 프로젝트 윈도우 툴바의 Scheme 메뉴에서 Edit Scheme을 선택하여 스키마 편집기를 엽니 다. 프로젝트 편집기의 왼쪽에서 실행 단계를 선택하십시오. 구성표 편집기 맨 위에있는 옵션 단추를 클릭하십시오. 사용자 정의 작업 디렉토리 사용 선택란을 선택하십시오. 작업 디렉토리를 선택하려면 텍스트 필드의 오른쪽에있는 버튼을 클릭하십시오.

enter image description here

관련 문제