C++Introduction to C++Language FeatureLearn C++

How To Extract A Relative Path From Path Strings on Windows

C++ Builder is the easiest and fastest C and C++ IDE for building simple or professional applications on the Windows, macOS, iOS & Android operating systems. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform UIs. There is a free C++ Builder Community Edition for students, beginners, and startups.

C++ Builder has specific Path Manipulation Routines that allows user to edit, extract, get and set drive name, directory name, file name, file extensions, .. etc, and these methods are combined in Vcl.FileCtrlSystem.IOUtilsSystem.SysUtils libraries. These path manipulation methods are easy to use and easy to get or set file path strings in that operating system. These can be used with other component properties like FileName property of OpenDialog, SaveDialog components.

Let’s see how we can use ExtractRelativePath Method to extract a Realtive Path from the two path Strings on Windows.

What is the C++ ExtractRelativePath method?

ExtractRelativePath method (System::SysUtils::ExtractRelativePath) is a Path Manipulation Routine that returns a relative path name from given two path strings, relative to a specific base directory. Call  to convert a fully qualified path name into a relative path name. The DestName parameter specifies the file name (including path) to be converted. BaseName is the fully qualified name of the base directory to which the returned path name should be relative. BaseName may or may not include a file name, but it must include the final path delimiter. If you send the function what should be a directory without the trailing backslash (c:\foo instead of c:\foo\), the function treats foo as a file and returns undesirable results.

ExtractRelativePath Syntax

Simple ExtractRelativePath Example

We can separate drives and folders in a path string with “\\” to define single \ and we can extract relative path from two path strings as below,

the output file name string will be “SubFolder\myimage.jpg”. This method is very useful when comparing two path strings.

Here is a simple C++ Builder VCL example of extracting a relative file path

Here ShowMessage() command will extract and display path from this string as “SubFolder\” below,

How To Extract A Relative Path From Path Strings on Windows

We can easily use this method with the FileName property of OpenDialog, SaveDialog components or with the String / UnicodeString properties of the other components. Here is the C++ Builder VCL Example,

This will show the relative path of a file in comparison with “D\\” with the FileName that you select by the OpenDialog component.


RAD Studio C++ Builder is a great environment for learning to use C++ and is also powerful enough for all your professional and beginner development needs.
Why not download and try the free C++ Builder trial version?

Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome C++ content in your inbox, every day.

We don’t spam! Read our privacy policy for more info.


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial

Free C++Builder Community Edition

About author

Dr. Yilmaz Yoru has 35+ years of coding with more than 30+ programming languages, mostly C++ on Windows, Android, Mac-OS, iOS, Linux, and some other operating systems. He graduated and received his MSc and PhD degrees from the Department of Mechanical Engineering of Eskisehir Osmangazi University. He is the founder and CEO of ESENJA LLC Company. His interests are Programming, Thermodynamics, Fluid Mechanics, Artificial Intelligence, 2D & 3D Designs, and high-end innovations.
Related posts
C++C++17Code SnippetGame DevelopmentLanguage FeatureLearn C++

What Is Skia In Modern C++?

C++C++17Learn C++

How To Use Skia in C++ Builder 12?

C++C++17C++20Introduction to C++Language FeatureLearn C++Syntax

Learn How To Use Clamp (std::clamp) In Modern C++ 17 and Beyond

C++C++11C++14C++17C++20Learn C++

What Is The Priority Queue (std::priority_queue) In Modern C++?