2016-07-29 2 views
2

다음 코드에 nameage에 대한 내 cin 값을 가져오고 fileProcessingTrial.txt 파일에 작성해야하는 다음 코드에 Mac 및 Xcode를 사용하고 있습니다.Mac에서 ofstream을 사용하여 파일을 쓰면 내 파일은 어디에 저장됩니까?

#include <iostream> 
#include <string> 
#include <fstream> 
#include <cstdlib> 
using namespace std; 

int main() 
{ 
    // insert code here... 
    string name; 
    int age; 
    ofstream fileProcessing("fileProcessingTrial.txt", ios::out); 
    cout<<"Please enter your name: "<<endl; 
    cin>>name; 
    cout<<"Please enter your age: "<<endl; 
    cin>>age; 
    fileProcessing<<name<<" "<<age<<endl; 
    return 0; 
} 

그리고 어디에 내 파일 fileProcessingTrial.txt (기본적으로?) 저장되어있는 내가 그것을 열려면? 특정 위치에 저장할 수 있습니까?

+1

이것은 IDE에 따라 다를 수 있습니다 (또는 적어도 Linux 및 Windows에서 해당). – drescherjm

+2

파일을 쓸 때 응용 프로그램의 '현재 작업 디렉토리'가 무엇인지에 따라 다릅니다. –

+0

동의. IDE는 일반적으로 사용자를 위해 기본 폴더를 설정하고 IDE에서 기본값을 변경할 수있는 옵션을 제공합니다. 그걸로 프로그램도 작업 디렉토리를 변경할 수 있다고하지만. 그러나 OP는 코드에서 변경했는지 묻지 않을 것입니다. – drescherjm

답변

2

나는 Xcode에 대한 답변을 추가 할 것이라고 생각했습니다. 당신이 구축하고 엑스 코드합니다 (IDE)에서 실행 파일을 실행하는 경우, 출력 파일은 내장 곳이기 때문에 빌드 제품과 같은 디렉토리에 갈 것이다 (당신은 파일 이름에 대한 절대 경로를 지정하지 않은 경우) 실행 파일이됩니다. 이것은 Xcode가 실행 파일을 실행할 때 Jesper Juhl이 언급 한 current working directory이됩니다. 그 위치를 확인하려면 (이 왼쪽 창에서 File Out 실행 파일입니다 아래 스크린 샷)을 프로젝트 네비게이터제품 클릭합니다. 그런 다음 오른쪽 상단 창에서파일 검사기를 찾습니다. 전체 경로의 디렉토리 부분은 출력 파일의 위치입니다. 상대 경로를 지정했다면

enter image description here

는, 그 위치는 빌드 제품이 디렉토리에 상대적인 것이며, 예스퍼 말했듯이, 당신은 당신의 프로그램에 절대 경로를 인코딩하지 않도록해야합니다.

은 엑스 코드에서, 당신은 또한 계획을 편집하여 current working directory을 변경할 수 있습니다

  1. 이동을 옵션에 탭 실행 아래를 계획 편집기에서.
  2. 를 클릭하여 사용자 정의
  3. 선택 디렉토리를 체크 박스를 작업 또는 작업 디렉토리 (절대 경로)이 도움이

희망을 입력 할 수 있습니다.

2

절대 또는 상대 경로를 지정하지 않으면 파일을 만들 때 응용 프로그램의 current working directory (별칭 : CWD)으로 파일이 생성됩니다.

프로그램은 그와 chdir() CWD를 변경 getcwd()와의 전류를 얻을 수있다. 프로그램 시작시 몇 가지 잘 알려진 디렉토리로 변경하고이 데몬이 있다면이 모든 일을하는

것이 일반적이다.

일부 응용 프로그램에서는 실행 파일의 위치를 ​​결정하는 것이 일반적입니다 (예 : Linux에서 /proc/self/exe 읽기). 그런 다음 파일을 상대 디렉토리에 씁니다.

기타 일반적으로 사용되는 옵션은 다음과 같습니다. 사용자 홈 디렉토리 또는 명령 행 또는 구성 파일에 지정된 디렉토리에 쓰기.

당신은 쉘에서 프로그램을 실행

는 CWD는 처음에 응용 프로그램을 시작할 때의 사용자가있는 디렉토리됩니다.

IDE에서 실행되는 CWD는 일반적으로 그 구성에 지정된 어떤 위치에 IDE에 의해 설정된다.

모든 사용자 컴퓨터에 경로가 존재한다는 것을 확신 할 수 없으므로 (예외는 물론 있음) 또는 사용자 파일을 쓰고 싶어하므로 절대 파일 경로를 하드 코딩하지 마십시오. 사용자에게 한 가지 또는 다른 방법을 묻고 해당 위치에 파일을 씁니다.

+2

.. 그리고 그 경로에 저장된 사용자 _wants_ 파일이있는 경우. 사람들은 항상 이것을 잊어 버립니다 : 코드를 작성하면 최종 사용자의 컴퓨터에서 _guest_가됩니다. –

+0

동의. 그건 좋은 지적이야. 내 대답이 업데이트됩니다. –

+0

... : 엄지 손가락 : ... –

관련 문제