확장명에 따라 파일을 분류하는 프로그램을 작성했습니다. 이제는 if-else 조건 [아래 코드]을 사용하여 파일을 그룹화했습니다. 별도의 클래스를 사용하려고 계획 중입니다. 그 클래스에서 모든 문서 유형을 유지하십시오. 더 간단한 구현을 환영합니다.여러 파일 유형을 검사하는 방법
if(it->path().extension() == ".txt"||it->path().extension() == ".doc"||it->path().extension() == ".docx"||it->path().extension() == ".pdf")
{
f[0].filePath=it->path();
f[0].fileName=it->path().filename();
f[0].fileExt=it->path().extension();
query="Insert into Filemanager(Filepath,Filename,Category)values('" + f[0].filePath.string() + "','" + f[0].fileName.string() + "','Documents')";
}
else if(it->path().extension() == ".mp3"||it->path().extension() == ".wma")
{
f[1].filePath=it->path();
f[1].fileName=it->path().filename();
f[1].fileExt=it->path().extension();
query="Insert into Filemanager(Filepath,Filename,Category)values('" + f[0].filePath.string() + "','" + f[0].fileName.string() + "','Music')";
}
else if(it->path().extension() == ".mp4")
{
f[2].filePath=it->path();
f[2].fileName=it->path().filename();
f[2].fileExt=it->path().extension();
query="Insert into Filemanager(Filepath,Filename,Category)values('" + f[0].filePath.string() + "','" + f[0].fileName.string() + "','Videos')";
}
else if(it->path().extension() == ".jpg"||it->path().extension() == ".jpeg"||it->path().extension() == ".gif")
{
f[3].filePath=it->path();
f[3].fileName=it->path().filename();
f[3].fileExt=it->path().extension();
query="Insert into Filemanager(Filepath,Filename,Category)values('" + f[0].filePath.string() + "','" + f[0].fileName.string() + "','Pictures')";
}
else
{
f[4].filePath=it->path();
f[4].fileName=it->path().filename();
f[4].fileExt=it->path().extension();
query="Insert into Filemanager(Filepath,Filename,Category)values('" + f[0].filePath.string() + "','" + f[0].fileName.string() + "','Others')";
}
if-else 조건을 피하고 싶습니다. 미리 감사드립니다.
최종 수정 된 코드 :
std::map<string,string> docTypes = boost::assign::map_list_of (".txt", "Documents") (".pdf", "Documents") (".pdf", "Documents") (".rtf", "Documents")
(".jpg", "Pictures") (".jpeg", "Pictures") (".gif", "Pictures")
(".mp3", "Audio") (".mp4", "Audio")
(".wma", "Video") (".flv", "Video");
f[0].filePath=it->path();
f[0].fileName=it->path().filename();
std::map<std::string,std::string>::iterator docIterator=docTypes.find(it->path().extension().string());
if(docIterator != docTypes.end())
{
category = docIterator->second;
}
else
{
category="Others";
}
query="Insert into Filemanager(Filepath,Filename,Category)values('" + f[0].filePath.string() + "','" + f[0].fileName.string() + "','" + category + "')";
훨씬 간단한 방법으로지도를 초기화 할 수 있습니다. http://stackoverflow.com/a/138612/4323 –
감사합니다. @JohnZwinck, 멋진 아이디어 :) +1 – kolenda
+1했습니다. 존 zwink 방법 !! – user3264565