2012-02-25 3 views
0

Je veux obtenir le nom de fichier d'un vector <wstring> après l'opération de recherche je veux copier tous les fichiers sur le vecAviFiles à un autre chemin (par exemple D: \ Test).Comment obtenir le nom de fichier

int main() 
    { 
     int      iRC   = 0; 
     std::vector<std::wstring> vecAviFiles; 
     std::wstring fileCopiedDestination = L"D:\\"; 





    // Search 'c:' for '.avi' files including subdirectories 
    iRC = SearchDirectory(vecAviFiles, L"c:\\", L"doc"); 
    if(iRC) 
    { 
    std::cout << "Error " << iRC << std::endl; 
    return -1; 
    } 

    // Print results 
    for(std::vector<std::wstring>::iterator iterAvi = vecAviFiles.begin(); iterAvi != vecAviFiles.end(); ++iterAvi) 
    { 

     std::wcout << *iterAvi << std::endl; 
     copy_file(*iterAvi,fileCopiedDestination + path::filename(*iterAvi)); 

    } 

    return 0; 
} 

Le problème est dans cette fonction (il ne fonctionne pas) de la bibliothèque Boost copy_file(*iterAvi,fileCopiedDestination + path::filename(*iterAvi)); comment puis-je obtenir le nom de fichier pour l'ajouter au chemin fileCopiedDestination. ou comment puis-je faire samething en utilisant cette fonction de la WIN API

CopyFileW(Input.c_str(),filename(Input.c_str()) , TRUE); 

Je pense que tout est clair.

+0

Pouvez-vous être plus précis sur "ne pas travailler"? Ne compile-t-il pas ou ne copie-t-il pas? – hmjd

+0

il ne compile pas – pourjour

+0

@pourjour Voir ma réponse; J'ai corrigé l'erreur de compilation. – spencercw

Répondre

1

Cela devrait faire ce que vous recherchez:

path destination = fileCopiedDestination/path(*iterAvi).filename(); 
copy_file(*iterAvi, destination); 

Il serait probablement mieux si vous avez enregistré vecAviFiles comme vector<path>, le code serait un peu plus court:

path destination = fileCopiedDestination/iterAvi->filename(); 
Questions connexes