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