http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=946283&ref=946283&page=1
안녕하세요 . 하위폴더를 검색해야 하는 일이 생겨서 검색하던 중 찾은 소스입니다.
적용을 해보려고 하는데요 . 잘 안되서 질문드립니다.
CString strFolderItem;
CString m_sCopyList ; 이렇게 선언하고 ,
...
m_sCopyList.push_back(strFolderItem);
push_back을 하면
빨간줄이 생기면서
'ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>에
push_back 멤버가 없습니다. ' 이런 말이 뜹니다.
어떻게해야 하나요?
--------------[ 전체소스 ]------------
void GetFileList(CString strFolder)
{
CFileFind file;
BOOL b = file.FindFile(strFolder + _T("\\*.*")); // 모든 확장자를 다 사용.
// CString strMusicFilter = ".MP3.OGG.WMA.WAV"; // 필터링 하고 싶으면 이렇게 쓰면 됨
CString strFolderItem, strFileExt, strTempString;
//CString m_sCopyList = _T("");
CString m_sCopyList ;
while(b)
{
b = file.FindNextFile();
if(file.IsDirectory() && !file.IsDots()) // 디렉토리 발견시
{
strFolderItem = file.GetFilePath();
GetFileList(strFolderItem); // 하위폴더를 검색하기 위해 재귀호출 발생
}
strFolderItem = file.GetFilePath();
strFileExt = strFolderItem.Mid(strFolderItem.ReverseFind('.')); // 확장자만 추출한다.
if (!file.IsDots()) // 파일 탐색 필터 정의에따라 해당 StringList에 추가
{
strFileExt.MakeUpper(); // strFileExt 에는 확장자 (.EXE 형태) 가 들어옴. 비교위해 대문자화 함
if( file.IsDirectory() ) continue; // 폴더만 남는 경우는 넣으면 안됨
m_sCopyList.push_back(strFolderItem);
}
}
}
에러 메시지 그대롭니다.
CString 클래스에는 push_back 이라는 메소드는 없습니다.
CString m_sCopyList; 가 아니라 std::vector<CString> m_sCopyList; 로 사용하시려고 했던게 아닌가 싶네요.
#include <ctype.h>
#include <io.h>
#include <stdio.h>
#include <iostream>
#include <afxwin.h>
//#include <cstring.h>
#include <atlstr.h>
#include <vector>
using namespace std;
void GetFileList(CString strFolder)
{
CFileFind file;
BOOL b = file.FindFile(strFolder + _T("\\*.*")); // 모든 확장자를 다 사용.
// CString strMusicFilter = ".MP3.OGG.WMA.WAV"; // 필터링 하고 싶으면 이렇게 쓰면 됨
CString strFolderItem, strFileExt, strTempString;
//CString m_sCopyList = _T("");
std::vector<CString> m_sCopyList;
while(b)
{
b = file.FindNextFile();
if(file.IsDirectory() && !file.IsDots()) // 디렉토리 발견시
{
strFolderItem = file.GetFilePath();
GetFileList(strFolderItem); // 하위폴더를 검색하기 위해 재귀호출 발생
}
strFolderItem = file.GetFilePath();
strFileExt = strFolderItem.Mid(strFolderItem.ReverseFind('.')); // 확장자만 추출한다.
if (!file.IsDots()) // 파일 탐색 필터 정의에따라 해당 StringList에 추가
{
strFileExt.MakeUpper(); // strFileExt 에는 확장자 (.EXE 형태) 가 들어옴. 비교위해 대문자화 함
if( file.IsDirectory() ) continue; // 폴더만 남는 경우는 넣으면 안됨
m_sCopyList.push_back(strFolderItem);
}
}
}
반응형
'나의질문답' 카테고리의 다른 글
cout 한글 출력 질문있습니다. (0) | 2014.12.01 |
---|---|
하위폴더 검색시 파일명이 출력됐으면 합니다. (0) | 2014.11.25 |
안드로이드 내장버튼 제어 ? 질문있습니다. (0) | 2014.11.17 |
뒤로가기 버튼시 데이터 가지고 있다가 보여주기 (0) | 2014.11.11 |
문자열 잘라서 arraylist만들기 다시 질문드립니다. (0) | 2014.11.11 |