What is the simplest way to get the directory that a file is in? I'm using this to find the working directory.
string filename = "C:\MyDirectory\MyFile.bat"
In this example, I should get "C:\MyDirectory".
The initialisation is incorrect as you need to escape the backslashes:
string filename = "C:\\MyDirectory\\MyFile.bat";
To extract the directory if present:
string directory; const size_t last_slash_idx = filename.rfind('\\'); if (std::string::npos != last_slash_idx) { directory = filename.substr(0, last_slash_idx); }
The quick and dirty:
Note that you must also look for /
because it is allowed alternative path separator on Windows
#include <string> #include <iostream> std::string dirnameOf(const std::string& fname) { size_t pos = fname.find_last_of("\\/"); return (std::string::npos == pos) ? "" : fname.substr(0, pos); } int main(int argc, const char *argv[]) { const std::string fname = "C:\\MyDirectory\\MyFile.bat"; std::cout << dirnameOf(fname) << std::endl; }
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