나의질문답

push_back에 빨간줄 어떻게 없애나요?

예쁜꽃이피었으면 2014. 11. 20. 13:39

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); 
}
}


반응형