注意:本實現只能解析類似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++ 解析文件路徑 獲取文件名和擴展名