C ++:如何将'PCZZWSTR'类型更改为'char',反之亦然?

时间:2013-09-17 13:13:58

标签: c++ visual-c++ copy directory

在Visual Studio中的C ++中,我尝试使用循环动态复制文件夹。为此,我使用sprintf函数更改文件夹,如下所示:

char sourceName[1000];
char dstName[1000];
SHFILEOPSTRUCT sf;
memset(&sf, 0, sizeof(sf));
sf.hwnd = 0; 
sf.wFunc = FO_COPY;

for (int i=1; i<100; i++)
{
    sprintf(sourceName, "C://Samples//%d//",i);
    sprintf(dstName, "U://NewData//%d//",i);
    sf.pFrom = sourceName;
    sf.pTo = dstName;
}

但是sf.pFrom和sf.pTo的行给出错误说:

Error: a value of type "char*" cannot be assigned to an entity of type PCZZWSTR. 

我尝试将sourceName和dstName更改为PCZZWSTR类型,同时声明它们:

PCZZWSTR sourceName;
PCZZWSTR dstName;

但这次sprintf函数不接受它们。那有什么解决方案吗?提前致谢。

1 个答案:

答案 0 :(得分:2)

我在您的代码中看到了几个问题。

  1. 首先,删除文件名'//'中的双斜杠。由于'\'是转义字符,因此只需加倍反斜杠。
  2. 使用wsprintf代替sprintf。使用wchar_t代替char s。
  3. 阅读SHFILEOPSTRUCT的内容。其成员pFrompTo一个或多个文件名。它们必须是双重终止的。