C++删除非空文件夹

函数参数必须带’/'结尾

void rmdir(const std::string& dir)
{
    struct _finddata_t fb;
    long long handle = _findfirst((dir + '*').c_str(), &fb);//查找第一个子文件: .
    if(handle != -1){//
        _findnext(handle, &fb);//去除第二个子文件: ..
        while(0 == _findnext(handle, &fb)){//查找下一个子文件
            if(fb.attrib == 16){//16代表是目录
                rmdir(dir + fb.name + '/');//递归调用删除目录
            }else{
                remove((dir + fb.name).c_str());//用标准函数删除文件
            }
        }
        _findclose(handle);
    }
    rmdir(dir.c_str());//用标准函数删除目录
}