注意:本实现只能解析类似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++ 解析文件路径 获取文件名和扩展名