如何获取文件名

时间:2012-02-25 23:04:52

标签: c++ vector filenames wstring file-copying

我希望在搜索操作后从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);

我认为一切都很清楚。

1 个答案:

答案 0 :(得分:1)

这应该可以满足您的需求:

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

如果您将vecAviFiles存储为vector<path>可能会更好,那么代码会更短一些:

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