我是 C++ 新手,学习曲线已经教会了我很多东西,但现在我真的需要找到一种快速、巧妙的方法。
我尝试了很多方法,但无法弄清楚(或者它有效;但部分有效)。
size_t found = strFullPathName.find(".file001");
if (found != string::npos)
{
//Find us the filename, and return in correct format.
strFullPathName = strFullPathName.substr(0, strFullPathName.find(".file001"));
strFullPathName = szCurDir + "\\output\\" + strFullPathName + ".file001";
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我.file001扩展名之前的任何内容。
但我实际上想要的只是一种获取文件名的方法。
这可以有或没有扩展,优选没有。
我确信这可以通过多种方式完成。但我似乎找不到一种简单快捷的方法来做到这一点。
预先感谢您帮助我。
如果您有 C++17,请使用:
std::filesystem::path(strFullPathName).stem()
Run Code Online (Sandbox Code Playgroud)
这将为您提供不带扩展名的文件名,并且适用于支持 C++17 的任何平台。请参阅https://en.cppreference.com/w/cpp/filesystem/path/stem
如果您没有 C++17,但使用的是 POSIX 风格的系统(例如 Linux 或 Mac OS),basename()则会为您提供包括扩展名的文件名。
如果您没有 C++17 并且使用的是 Windows,请尝试_splitpath_s().