【发布时间】:2017-06-28 16:32:10
【问题描述】:
删除任何文件夹的 C++ 代码:
#include <string>
#include <iostream>
#include "stdafx.h"
#include <stdio.h>
#include <afx.h>
#include <windows.h>
#include <conio.h>
#include <io.h>
using namespace std;
BOOL IsDots(wchar_t* str)
{
if (_tcscmp(str, TEXT(".")) && _tcscmp(str, TEXT("..")))
return FALSE;
return TRUE;
}
BOOL DeleteDirectory(wchar_t* sPath)
{
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
wchar_t DirPath[MAX_PATH];
wchar_t FileName[MAX_PATH];
_tcscpy(DirPath, sPath);
_tcscat(DirPath, TEXT("\\*"));
_tcscpy(FileName, sPath);
_tcscat(FileName, TEXT("\\"));
//GETTING THE FISRT FILE
hFind = FindFirstFile(DirPath, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
return FALSE;
_tcscpy(DirPath, FileName);
bool bSearch = true;
while (bSearch) {
if (FindNextFile(hFind, &FindFileData)) {
if (IsDots(FindFileData.cFileName))
continue;
_tcscat(FileName, FindFileData.cFileName);
if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
//DELETING THE DIRECTORY
if (!DeleteDirectory(FileName)) {
FindClose(hFind);
return FALSE;
}
RemoveDirectory(FileName);
_tcscpy(FileName, DirPath);
}
else {
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
_chmod(FileName, _S_IWRITE);
mode if (!DeleteFile(FileName))
{
FindClose(hFind);
return FALSE;
}
_tcscpy(FileName, DirPath);
}
}
else {
if (GetLastError() == ERROR_NO_MORE_FILES)
bSearch = false;
else {
FindClose(hFind);
return FALSE;
}
}
}
FindClose(hFind);
return RemoveDirectory(sPath);
}
//CALLING THE DEL DIR FUNCTION
希望有人能帮忙!!
我收到以下错误:
错误 C2664:“_chmod”:无法从“wchar_t”转换参数 1 [260]' 到 'const char *'
附:我使用 Microsoft Visual Studio。
【问题讨论】:
-
我认为错误非常明显。您有一个
wchar_t数组并尝试调用一个需要char数组的函数。这可能是由于您的UNICODE宏设置不匹配,而_chmod是一个非标准函数,不提供宽字符和窄字符替代方案。尝试改用 Windows API 函数,或_wchmod。 -
请不要再喊了。
-
_wchmod 工作了很多 :)
-
@Someprogrammerdude:请在答案部分回答,不要在 cmets 中回答。
标签: c++ visual-studio visual-studio-2012 delete-file msdn