J'essaie de copier un dossier en SHFileOperationA
fonction. Voici mon code.
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;
}
Je n'arrive pas à comprendre comment faire pour que la chaîne ajoutée par \0
deux fois. J'ai essayé quelque chose comme ça.
string source = "D:\\check\\folder4\\0\\0";
string dest = "D:\\Documents\\test\\folder4\\0\\0";
Mais, ça ne marche pas. J'ai également essayé quelques autres combinaisons mais aucune ne fonctionne. Quelqu'un peut-il me suggérer comment résoudre ce problème ?
Je peux résoudre le problème en assignant directement les chemins comme ceci :-
sf.pFrom = "D:\\check\\folder4";
sf.pTo = "D:\\Documents\\test\\folder4";
et le problème est résolu, mais mon intention est d'utiliser des chaînes de caractères. Quelqu'un peut-il m'aider à résoudre ce problème ?
En outre, si possible, quelqu'un peut-il me dire pourquoi l'affectation directe de la constante de la chaîne, c'est-à-dire sf.pFrom = "D:\\check\\folder4";
fonctionne et l'affectation en utilisant une chaîne comme sf.pFrom = source.c_str( );
ne fonctionne pas ?
Merci d'avance.