2012-12-10 3 views
2

xcode를 사용하고 있으며 경로 끝에 앱 이름없이 내 앱이 실행되는 경로를 가져 오려고했지만 다음과 같이 시도했습니다.앱 끝에 앱 이름이없는 앱 경로를 가져옵니다.

printf("%s\n", argv[0]); 

내 앱이 실행되는 올바른 경로를 제공하지만 내 앱 이름으로 끝납니다. 앱 이름을 제거하려면 어떻게해야하나요?

+0

언어 (아니, C/C++의 프로그래밍 언어가 아닙니다)? –

답변

1

사용 있는 dirname

#include <iostream> 
#include <libgen.h> 

int main(int argc, char* argv[]) 
{   
    std::string dir = dirname(argv[0]); 
    std::cout << dir << std::endl; 
} 

응용 프로그램 실행 :

$/data/temp/test 

출력 :

$/data/temp 
1

dirname 기능을 사용할 수 있습니다.

+0

사용 방법에 대한 예를 들어 주시겠습니까? 그것은 간단 할 수도 있지만, 실수를 피하기 위해 –

+0

@JhsajdaHhas 빌트에서 대답을 참조하십시오. –

1

사용 std::string::find_last_of은 (/ 경우 * nix에서 스크립트, 윈도우 경우 \) 경로 구분자의 마지막 인스턴스를 발견하고 그 인덱스까지 모든 것을 복사 std::string::substr를 사용합니다.

예 :

std::string file = argv[0]; 

std::string path = file.substr(0,file.find_last_of("/")); 

+0

마음에 들지 않으면 코드의 작은 예제를 보여 주시겠습니까 –

0

당신이 bash는 pwd의 동등한를 찾고 있다면 내 코드에서 어떤 바보 같은 실수를 금지, 당신이 원하는 무엇을해야합니까, 당신은 사용할 수 있습니다

#include <unistd.h> 
char *getcwd(char *buf, size_t size); 

이전에 chdir()을 호출했다면주의하십시오. 이것은 당신이 찾고있는 경로를 반환하지 않습니다.

+0

장래에 다른 사람들을 돕기 위해 그것을 사용하는 방법을 보여주세요. –

+0

dirname()은 파일 이름을 제거하려는 경우 실제로 더 좋은 태도입니다. 전체 경로. getcwd()는 현재 작업 디렉토리 인 쉘의 pwd와 동일한 출력을 제공합니다 (변경되지 않은 경우 바이너리를 호출 한 디렉토리) – davak