从路径获取文件名

从路径获取文件名

从路径获取文件名的最简单方法是什么?

string filename = "C:\\MyDirectory\\MyFile.bat"

在这个例子中,我应该得到“MyFile”。没有扩展名。

最佳答案

_splitpath应该做您所需要的。您当然可以手动执行,但是_splitpath也可以处理所有特殊情况。

编辑:

正如BillHoag提到的,建议在可用时使用更安全的_splitpath版本_splitpath_s

或者,如果您想要便携式的东西,可以做这样的事情

std::vector<std::string> splitpath(
  const std::string& str
  , const std::set<char> delimiters)
{
  std::vector<std::string> result;

  char const* pch = str.c_str();
  char const* start = pch;
  for(; *pch; ++pch)
  {
    if (delimiters.find(*pch) != delimiters.end())
    {
      if (start != pch)
      {
        std::string str(start, pch);
        result.push_back(str);
      }
      else
      {
        result.push_back("");
      }
      start = pch + 1;
    }
  }
  result.push_back(start);

  return result;
}

...
std::set<char> delims{'\\'};

std::vector<std::string> path = splitpath("C:\\MyDirectory\\MyFile.bat", delims);
cout << path.back() << endl;

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

10-11 22:51