2012-02-25 125 views
0

我想从vector <wstring>获得文件名后搜索操作我想vecAviFiles上的所有文件复制到另一个路径(例如D:\ Test)。如何获取文件名

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; 
} 

的问题是在这个函数boost库copy_file(*iterAvi,fileCopiedDestination + path::filename(*iterAvi));的(它不工作),我怎么能得到的文件名,将其添加到fileCopiedDestination路径。 或如何从WIN API

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

做使用此功能的samething我认为这一切都清楚了。

+0

你能对“不工作”更具体些吗?它不编译或不复制? – hmjd 2012-02-25 23:08:37

+0

它不会编译 – pourjour 2012-02-25 23:26:07

+0

@pourjour查看我的答案;我修复了编译错误。 – spencercw 2012-02-25 23:31:11

回答

1

这应该做你在找什么:

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

它可能会更好,如果你存储vecAviFiles作为vector<path>,那么代码将是一个短一点:

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