我正在尝试使用SHFileOperation()
复制文件夹,但收到此错误:
不能将"const char *"类型的值分配给类型为"PCZZWSTR"的实体
对于s.pTo
和s.pFrom
.
我使用的代码是:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = "C:\Users\styler\Desktop\Folder1 ";
s.pFrom = "C:\Users\styler\Desktop\Software\Folder2\Folder3\* ";
SHFileOperation(&s);
我在s.pTo
和s.pFrom
做错了什么?我将它们设置为目标文件夹和源文件夹,但为什么这不起作用?
编译器告诉您正在尝试将char
字符串文本分配给wchar_t
字符串指针(PCZZWSTR
=CONST WCHAR *
)。 这意味着您必须使用UNICODE
定义进行编译,其中SHFileOperation()
映射到需要wchar_t*
字符串指针而不是char*
字符串指针的SHFileOperationW()
。
因此,您需要在字符串文字前面加上L
前缀,例如:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = L"C:\Users\styler\Desktop\Folder1 ";
s.pFrom = L"C:\Users\styler\Desktop\Software\Folder2\Folder3\* ";
SHFileOperation(&s);
或者,由于您实际使用的是SHFileOperation()
的TCHAR
版本,因此请使用TEXT()
宏将字符串文本与TCHAR
使用的实际字符类型进行匹配:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = TEXT("C:\Users\styler\Desktop\Folder1 ");
s.pFrom = TEXT("C:\Users\styler\Desktop\Software\Folder2\Folder3\* ");
SHFileOperation(&s);