• C++ 常用代码片段整理


    C++ 常用代码片段整理

    一丶文件 文件夹相关

    1.1 递归删除文件

    
    wstring Utilstring2wstring(string str)
    {
    	wstring result;
    	//获取缓冲区大小,并申请空间,缓冲区大小按字符计算  
    	int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);
    	wchar_t* buffer = NULL;
    	buffer = new wchar_t[len + 1];
    	//多字节编码转换成宽字节编码  
    	MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);
    	buffer[len] = L'\0';             //添加字符串结尾  
    	//删除缓冲区并返回值  
    	result.append(buffer);
    	if (buffer != NULL)
    	{
    		delete[] buffer;
    		buffer = NULL;
    	}
    	return result;
    }
    
    //将wstring转换成string  
    string Utilwstring2string(wstring wstr)
    {
    	string result;
    	//获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的  
    	int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
    	char* buffer = new char[len + 1];
    	//宽字节编码转换成多字节编码  
    	WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
    	buffer[len] = '\0';
    	//删除缓冲区并返回值  
    	result.append(buffer);
    	delete[] buffer;
    	return result;
    }
    
    bool DeleteAllFileA(std::string FileName)
    {
    	string RootFileName = FileName;
    	wstring wRootFileName = Utilstring2wstring(RootFileName);
    	
    	RootFileName = endsWith(wRootFileName, L"\\") ? RootFileName : RootFileName + "\\";
    	string RmFilter = RootFileName + "*.*";
    	WIN32_FIND_DATAA windata = { 0 };
    	HANDLE hFileHandle = FindFirstFileA(RmFilter.c_str(), &windata);
    	do
    	{
    		if (windata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    		{
    			string compareDirName = windata.cFileName;
    			if (compareDirName.find(".") != compareDirName.npos
    				|| compareDirName.find("..") != compareDirName.npos)
    			{
    				continue;
    			}
    			//递归删除
    			string RmFileName = RootFileName + compareDirName;
    			DeleteAllFileA(RmFileName);
    			RemoveDirectoryA(RmFileName.c_str()); //递归删除文件夹
    			continue;
    		}
    		//直接删除文件
    		string RmFileName = RootFileName + windata.cFileName;
    		DeleteFileA(RmFileName.c_str());
    		
    
    	} while (FindNextFileA(hFileHandle, &windata));
    	
    	return true;
    }
    
    作者:IBinary


    坚持两字,简单,轻便,但是真正的执行起来确实需要很长很长时间.当你把坚持两字当做你要走的路,那么你总会成功. 想学习,有问题请加群.群号:725864912(收费)群名称: 逆向学习小分队 群里有大量学习资源. 以及定期直播答疑.有一个良好的学习氛围. 涉及到外挂反外挂病毒 司法取证加解密 驱动过保护 VT 等技术,期待你的进入。

    详情请点击链接查看置顶博客 https://www.cnblogs.com/iBinary/p/7572603.html
  • 相关阅读:
    蓝牙协议分析(11)_BLE安全机制之SM
    蓝牙协议分析(10)_BLE安全机制之LE Encryption
    蓝牙协议分析(9)_BLE安全机制之LL Privacy
    蓝牙协议分析(8)_BLE安全机制之白名单
    蓝牙协议分析(7)_BLE连接有关的技术分析
    蓝牙协议分析(6)_BLE地址类型
    蓝牙协议分析(5)_BLE广播通信相关的技术分析
    蓝牙协议分析(4)_IPv6 Over BLE介绍
    蓝牙协议分析(3)_BLE协议栈介绍
    ActiveMq
  • 原文地址:https://www.cnblogs.com/iBinary/p/15508560.html
Copyright © 2020-2023  润新知