Boost filesystem extension: In the previous article, we have discussed about C++11 Lambda : How to capture member variables inside Lambda function. Let us learn how to extract file extension from a path string using Boost in C++ Program.
Extracting file extension from a path string using Boost & C++17 FileSystem Library
Filesystem c++: In this article we will discuss various ways of extracting an extension from given path string using some technique.
Some prerequisites are-
- C++ FileSystem Library
- Boost FileSystem Library
- C++ STL
i.e if we have given as /home/user/desktop/temp/logs.out then extension should be .out.
Fetch extension of a given file using std::string function :
C++ path: Let a scenario where we want to get extension in a given path string. For this-
- Search for ‘.’ where it is lastly occurred.
- If found return the substring from that ‘.’ to last character.
- If not found, return a empty string
#include <iostream>
#include <cassert>
#include <string>
std::string getExtension(std::string file_Path)
{
// Find the last position of '.' in given string path
std::size_t posn = file_Path.rfind('.');
// If last '.' in string path is found
if (posn != std::string::npos) {
// return the substring
return file_Path.substr(posn);
}
// In case of no extension empty string is returned
return "";
}
int main()
{
// File path where '.' is present
std::string file_Path = "/home/user/desktop/temp/logs.out";
std::string extension = getExtension(file_Path);
std::cout<<"Extension with '.' : "<<extension<<std::endl;
assert(extension == ".out");
// File path without '.'
file_Path = "/home/user/desktop/temp/";
extension = getExtension(file_Path);
std::cout<<"Extension without '.' : "<<extension<<std::endl;
assert(extension == "");
return 0;
}
Output : Extension with '.' : .out Extension without '.' :