c++ - 如何获取文件名

标签 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);

我认为一切都清楚了。

最佳答案

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

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

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

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

关于c++ - 如何获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448910/

相关文章:

c++ - Visual C++ 2010 Beta 2 上的复制省略

c++ - 平方差的数值精度

c++ - 将 shared_ptr(this) 插入 vector 会导致 "free(): invalid pointer"错误

php - 从文件中删除扩展名

php - 如何获取添加到目录的最后一个文件的名称

c++ - 声明区域和范围有什么区别

c# - C++ 应用程序通知 C# 应用程序

C++ 对 vector vector 中的多列进行排序

vector - 是否可以创建一个引用惰性静态值的向量?

linux - 是否可以在文件名中使用 "/"?