WIN32_FIND_DATA
이 구조체 내 코드입니다. cFileName
회원을 확인하십시오. 예를 들어
: 코멘트
문자열의 저장 스택에이 예에서
, 동일한 완충액에 응답
WIN32_FIND_DATA FindData = {0};
HANDLE hFind = FindFirstFile(pszPattern, &FindData);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
PTSTR pszFileName = FindData.cFileName;
// TODO: Use pszFileName in some way...
} while (FindNextFile(hFind, &FindData));
FindClose(hFind);
}
업데이트는 모든 호출에 사용된다. 즉, 모든 FindNextFile()
은 이전 문자열을 덮어 씁니다. 문자열의 복사본을 만들어야합니다.
당신이 std
에서 C++와 클래스를 사용하고 있기 때문에 나는 당신이 (당신이 UNICODE
및 _UNICODE
을 정의하고 wstring
를 사용해야합니다., 더 나은 아직 나) 할당을 수행하는 새로운 string
클래스를 초기화하고에 복사 std::string
에 저장 제안 너를 위해서. (: + memcpy
malloc
, strdup
또는 유사한을 사용하여, 예를 들면),하지만 당신은 문자열, 포인터의 재교육을 할 수 있습니다 것 같은데, 그리고 C에서 메모리 할당 전에
은 다른 방법은 일반적인 C 기술을 사용하여 문자열을 복사 할 수 있습니다 너는 그것에 가야 해.
그런데 오류를 확인하기 위해 코드에서 찾기 핸들을 NULL
과 비교합니다. 이것은 잘못되었습니다. FindFirstFile()
은 실패시 INVALID_HANDLE_VALUE
((HANDLE)-1
까지 해결)을 반환합니다. 또한 핸들을 닫으려면 FindClose()
을 사용하고 CloseHandle()
을 사용하지 않는 것이 좋습니다. ("find handle"은 실제로 파일 핸들, 모듈 핸들, 쓰레드 또는 프로세스 핸들과 같은 의미의 커널 객체에 대한 핸들이 아닙니다. 방금 유형을 오버로드했습니다.)
어떤 참고 자료를 사용하십니까? 해당 데이터 유형을 언급했지만 내용을 설명하지 않으면 다른 사람에게 해당 자원을 절대 추천하지 말아야한다는 메모를 작성해야합니다. MSDN 사용을 고려해야합니다. –