使用SHFileOperation删除文件夹报错的问题

使用SHFileOperation删除文件夹.测试代码运行正常.可实际运行时报错"无法打开 文件"等等..返回值1026.

查了下资料才发现.pFrom所指向的字符串要求以两个/0结束.测试时使用的是个静态的字符串.没有问题.

而实际使用时指向一个std::string的c_str().于是报错.

解决方案就是重新分配内存.置0.拷贝字符串.再运行.完整代码如下:

 

bool DeleteDirctor( std::string strPath ) { char szBuff[256]; ZeroMemory( szBuff, 256 ); strcpy_s( szBuff, strPath.size()+1, strPath.c_str() ); SHFILEOPSTRUCT kSH = {0}; kSH.fFlags = FOF_NOCONFIRMATION; kSH.pFrom = szBuff; kSH.pTo = NULL; kSH.wFunc = FO_DELETE; return SHFileOperation( &kSH ) == 0; }

 

你可能感兴趣的:(c,String,测试,null,delete)