본문 바로가기

프로그래밍/코드 조각

서브폴더 생성하기

    typedef std::basic_string<TCHAR> tstring;

    bool CreateSubDirectory(LPCTSTR folder)
    {
        ATLASSERT(folder);
        if(!folder) {
            SetLastError(ERROR_INVALID_PARAMETER);
            return false;
        }

        tstring strFoler(folder);
        if(strFoler.empty() || strFoler.find(_T("\\")) == tstring::npos) {
            return false;
        }
        size_t pos(0);
        tstring temp;
        if(strFoler[strFoler.size()-1] != _T('\\')) {
            strFoler.append(_T("\\"));
        }
        bool ret(true);
        while(!strFoler.empty() && ret)
        {
            pos = strFoler.find(_T("\\"));
            temp += strFoler.substr(0, pos+1);
            strFoler = strFoler.substr(pos+1 , strFoler.length()-pos+1 );
            if(_taccess_s(temp.c_str(), 0) != 0) {
                ret = !!CreateDirectory(temp.c_str(), NULL);
            }
        }

        return ret;
    }