Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get directory from file path c++

Tags:

c++

visual-c++

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".

like image 583
nidhal Avatar asked Dec 15 '11 10:12

nidhal


2 Answers

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); } 
like image 114
hmjd Avatar answered Oct 13 '22 06:10

hmjd


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; } 
like image 25
sehe Avatar answered Oct 13 '22 07:10

sehe