我正在尝试按SHFileOperationA
功能复制文件夹。这是我的代码。
int main() {
SHFILEOPSTRUCTA sf;
int result;
string source = "D:\\check\\folder4";
string dest = "D:\\Documents\\test\\folder4";
sf.pFrom = source.c_str( );
sf.pTo = dest.c_str( );
sf.wFunc = FO_COPY;
sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_SILENT;
result = SHFileOperationA(&sf);
return 0;
}
我无法理解如何使字符串附加\0
两次。我尝试过这样的事情。
string source = "D:\\check\\folder4\\0\\0";
string dest = "D:\\Documents\\test\\folder4\\0\\0";
但是,它不起作用。我还尝试了更多组合,但没有一个有效。请任何人都可以建议我如何解决这个问题?
我可以通过直接分配这样的路径来解决问题:-
sf.pFrom = "D:\\check\\folder4";
sf.pTo = "D:\\Documents\\test\\folder4";
问题得到解决,但我的意图是使用字符串。请任何人都可以帮我解决这个问题。
另外,如果可能的话,任何人都可以告诉我为什么直接分配字符串常量,即sf.pFrom = "D:\\check\\folder4";
有效,而使用类似字符串的分配sf.pFrom = source.c_str( );
无效?
提前致谢。