2012-02-25 135 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();