(C++) GetCurrentFolder
January 11, 2018 · View on GitHub
(C++) GetCurrentFolder
GetCurrentFolder is a file I/O code snippets to obtain the name of the folder your application runs in.
GetCurrentFolder using the STL only
#include <iostream> #include <string> #include <string> #include <cassert> //From http://www.richelbilderbeek.nl/CppGetPath.htm //Returns the path, without a trailing backslash '\' const std::string GetPath(const std::string& fileName) { #ifndef USE_WINDOWS const int endOfPathIndex = fileName.rfind("/",fileName.size()); #else const int endOfPathIndex = fileName.rfind("\\",fileName.size()); #endif assert(endOfPathIndex < static_cast<int>(fileName.size())); return fileName.substr(0,endOfPathIndex); } //From http://www.richelbilderbeek.nl/CppGetCurrentFolder.htm const std::string GetCurrentFolder(const std::string& s) { return GetPath(s); } int main(int argc, char *argv[]) { std::cout << GetCurrentFolder(argv[0]) << '\n'; }
Screen output:
/home/richel/qtsdk-2010.04/bin/Projects/Website/CppGetCurrentFolder-build-desktop
GetCurrentFolder using Boost.Filesystem
This version is more elegant and portable.
#include <cassert> #include <iostream> #include <string> #include <boost/filesystem.hpp> //From http://www.richelbilderbeek.nl/CppGetPath.htm const std::string GetPath(const std::string& filename) { return boost::filesystem::path(filename).parent_path().string(); } //From http://www.richelbilderbeek.nl/CppGetCurrentFolder.htm const std::string GetCurrentFolder(const std::string& s) { return GetPath(s); } int main(int argc, char *argv[]) { argc; //To stop compiler warning about unused argument argc assert(GetPath("/any_path/any_file.cpp")=="/any_path"); //non-Windows std::cout << GetCurrentFolder(argv[0]) << '\n'; }
Screen output:
/home/richel/qtsdk-2010.04/bin/Projects/Website/CppGetCurrentFolder-build-desktop