October 30, 2014
C++ : Convert fileparts Matlab Code
If you use Matlab, we can get pathname, filename and extension from input full string path. How if we want extract dirname, filename and extension in C++ ? I want to get pathdir, filename and extension from input string. I have created a simple code how to extract path, filename and extension from fullpath string in C++. Please check below code :
#include <iostream>
#include <string>
using namespace std;
void fileparts(string str, string separator, string *path, string *filename, string *extension)
{
string spath, sfile, sext;
string tmp;
spath = str.substr(0, str.find_last_of(separator));
tmp = str.substr(spath.size()+separator.size(), str.length());
sfile = tmp.substr(0, tmp.find_last_of("."));
sext = tmp.substr(sfile.size(), tmp.size());
*path = spath;
*filename = sfile;
*extension = sext;
}
int main(int argc, char **argv)
{
string path;
string filename;
string extension;
fileparts("C:\\dir1\\dir2\\filename.txt", "\\", &path, &filename, &extension);
cout<<"path="<<path<<endl;
cout<<"file="<<filename<<endl;
cout<<"ext="<<extension<<endl;
return(1);
}
Save code to fileparts.cpp. Compile code using command :
g++ fileparts.cpp -o fileparts
Below is result from running code above :
C:\temp\listdir>fileparst.exe path=C:\dir1\dir2 file=filename ext=.txt
Using above code, we can extract dirname, filename and extension from input of string using C++.