2009-03-04 6 views
-2

순전히 C (++)를 사용하여 폴더에서 파일 이름을 읽는 방법이 있습니까? 이는 windows.h (FindFirstFile(), 등등 ...)을 포함하지 않고 의미합니다. fstream에이 기능이있는 것처럼 보이지 않습니다. 파일 이름이 운영 체제에 따라 다르다는 것을 알고 있지만 Windows에서 허용 할 라이브러리가 있으면 좋겠다.C++을 사용하여 파일 이름 읽기

감사합니다.

+0

이것은 다른 질문과 정확히 일치합니다. "no FindFirstFile()"을 추가했습니다. 중복 질문을 추가하지 마십시오. –

+0

이전 질문에도이 해결책을 참조하십시오. http://stackoverflow.com/questions/609203/reading-file-names/609236#609236. 나머지 우리와 마찬가지로 그는 부스트를 권장합니다. –

답변

10

boost filesystem은 좋은 해결책입니다. 후드의 경우, 윈도우 API 호출을 여전히 사용하지만 (윈도우를 빌드 할 때), 이것은 당신에게서 추상화되어 있습니다.

4

C++은 일반적으로 이러한 기능을 제공하지 않습니다. 크로스 플랫폼 솔루션은 boost::filesystem을 사용하는 것입니다.

0

디렉토리를 반복하는 데 opendir() 및 readdir()을 사용하십시오. 매뉴얼 페이지의 예제 코드는 this link을 참조하십시오. 이 기능은 대부분의 Windows 및 UNIX 플랫폼에서 사용할 수 있어야합니다.

+0

불행히도 그는 그에게 처음 대답 할 때 귀담아 듣지 않았다 :- P. –

+0

Windows가 POSIX가 아니기 때문에이 함수는 Windows에서는 사용할 수 없습니다. Cygwin에서 사용할 수 있습니다. –

+0

창은 posix 함수의 작은 하위 집합을 (잘, 실패한) -posix 하위 시스템의 일부로 제공하지 않습니까? 나는 도대체 그것의 일부인지 아닌지 전혀 몰랐다. –

0

Windows에서 opendir() 및 readdir()을 사용하려면 유명한 GNU 컴파일러 모음의 Windows 포트 인 MinGW를 다운로드 할 수 있습니다. dirent.h를 포함하여 UNIX 헤더 파일의 windows 포트가 포함되어있어 지정된 기능을 사용할 수 있습니다. 이것들은 네이티브 API를 어느 쪽의 방법으로 호출 할지를 명심하십시오.

-john

+0

사실,이 작업을 위해서는 cygwin.dll을 기반으로 빌드해야한다고 생각합니다. mingw는 Microsoft 런타임과 연결된 c/C++ 컴파일러 만 제공합니다. –

+0

그게 내가 말한거야 ... 그것은 네이티브 Win32 API를 어느 쪽이라도 호출 할 것이지만 당신의 코드에서 그것들을 사용할 필요는 없다. –