注意:本实现只能解析类似linux下的路径,即“/data/a.txt”,而不能解析“c:\a.txt” 或者“c:\\a.txt”,但是应该很容易扩展改写实现此功能。
FilepathParse.h
#include <string>
using std::string;
void parseFilepath(string filepath, string &path, string &filename, string &ext)
{
if (!filepath.empty())
{
int locpoint = filepath.find_last_of('.');
int locfilename = filepath.find_last_of('/');
ext = filepath.substr(locpoint );//获取文件后缀
filename = filepath.substr(locfilename + 1, locpoint - locfilename-1);
path = filepath.substr(0, locfilename);
}
}
调用:
#include <iostream>
#include "FilepathParse.h"
using namespace std;
int main(int argc, char* argv[])
{
string path; string filename; string ext;
parseFilepath("c:/dd/a/e.txt", path, filename, ext);
return 0;
}
亦可参考:
windows 上的 _splitpath 函数在 linux 平台下的简单实现
C/C++ 解析文件路径 获取文件名和扩展名