从路径获取文件名的最简单方法是什么?
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/