I have
const char *pathname = "..\somepath\somemorepath\somefile.ext";
how to transform that into
"..\somepath\somemorepath"
?
GetDirectoryName (Remove File From Path)Use the Path. GetDirectoryName method from the System.IO namespace. Remove the file name from the path.
Click the Start button and then click Computer, click to open the location of the desired file, hold down the Shift key and right-click the file. Copy As Path: Click this option to paste the full file path into a document. Properties: Click this option to immediately view the full file path (location).
The easiest way is to use find_last_of
member function of std::string
string s1("../somepath/somemorepath/somefile.ext"); string s2("..\\somepath\\somemorepath\\somefile.ext"); cout << s1.substr(0, s1.find_last_of("\\/")) << endl; cout << s2.substr(0, s2.find_last_of("\\/")) << endl;
This solution works with both forward and back slashes.
On Windows use _splitpath()
and on Linux use dirname()
On Windows 8, use PathCchRemoveFileSpec
which can be found in Pathcch.h
PathCchRemoveFileSpec
will remove the last element in a path, so if you pass it a directory path, the last folder will be stripped.
If you would like to avoid this, and you are unsure if a file path is a directory, use PathIsDirectory
PathCchRemoveFileSpec
does not behave as expected on paths containing forwards slashes.
use strrchr()
to find the last backslash and strip the string.
char *pos = strrchr(pathname, '\\');
if (pos != NULL) {
*pos = '\0'; //this will put the null terminator here. you can also copy to another string if you want
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With