2012-04-10 4 views
0

사용자가 실행 파일과 동일한 폴더에 있지 않은 컴퓨터의 어딘가에 넣을 수있는 여러 리소스 파일을 갖게되는 프로그램이 있습니다. 파일을 어떻게 열 수 있습니까?C++에서 작업 디렉토리 외부의 파일 열기

나는 일을하지 못하는 이유는 파일이 작업 디렉토리에 없다는 답을 많이 발견했습니다. 정규 경로를 제공하려고 시도했습니다.

ifstream str; 
str.open("/home/millere/foo.txt") 

하지만 성공하지 못했습니다. 경로가 정확하다는 것을 압니다 (복사하여 붙여 넣기). 그것에 관한 문서를 찾을 수는 없지만 가능해야한다고 가정합니다. (예 : ~ 이외의 곳에서는 vim ~/foo.txt).

+3

'ifstream'이 아닌'iostream'을 원하십니까? – Maxpm

+0

예, 오타입니다. 결정된. – Ethan

답변

2

iostream 대신 ifstream을 사용한다고 가정하면 코드가 정확합니다. ifstream은 작업 디렉토리의 파일 이름뿐만 아니라 파일 경로를 사용할 수 있습니다.

파일이 없지만 실패 비트가 설정된 경우 예외가 발생하지 않습니다. 스트림에서 어떤 작업을 시도하기 전에이를 확인해야합니다.

std::ifstream input("/home/bob/stuff.txt"); 

if (!input) std::cerr << "Could not open the file!" << std::endl; 

else 
{ 
    // ... 
} 

여전히 파일에서 데이터를 추출 할 수없는 경우 문제는 코드의 다른 부분입니다.

+0

훌륭합니다, 감사합니다. 전에는 효과가 없었던 것이 무엇인지 궁금합니다. – Ethan

+0

@Maxpm'open()'함수는 경로를 사용하여 다른 디렉토리에있는 파일을 열 수 있습니까? 예를 들어'/ etc/passwd /'? – Edeph

관련 문제