VS 工程项目中用于获取当前项目根目录的方法

来源:互联网 发布:淘宝代练可靠吗 编辑:程序博客网 时间:2024/05/19 14:39

在VS中定位当前工程项目的根目录!

涉及到:

#include <windows.h>头文件中的GetCurrentDirectory()方法和GetModuleFileName()方法。

file_manager.h

#pragma once#include <windows.h>#include <string>using namespace std;class FileManager{public:static string GetRootDirectory();static string GetExeDirectory();private://构造函数FileManager() {};//获取当前项目根目录static void loadRootDir();//获取exe文件目录static void loadExeDir();//静态数组static char rootPath[MAX_PATH];//根目录static char exePath[MAX_PATH];//执行文件目录};

file_manager.cpp

#include "file_manager.h"//类的静态数组 初始化char FileManager::rootPath[MAX_PATH] = "";char FileManager::exePath[MAX_PATH] = "";string FileManager::GetRootDirectory(){loadRootDir();string root = rootPath;/*for (char &c : root){if (c == '\\')c = '\/';}*/for (auto iter = root.begin(); iter != root.end(); iter++){if (*iter == '\\')*iter = '\/';}return root;}string FileManager::GetExeDirectory(){loadExeDir();string exe = exePath;exe = exe.substr(0, exe.find_last_of('\\'));/*for (char &c : exe){if (c == '\\')c = '\/';}*/for (auto iter = exe.begin(); iter != exe.end(); iter++){if (*iter == '\\')*iter = '\/';}return exe;}//获取当前项目根目录void FileManager::loadRootDir(){GetCurrentDirectory(MAX_PATH, rootPath);}//获取exe文件目录void FileManager::loadExeDir(){GetModuleFileName(NULL, exePath, MAX_PATH);}



使用方法:

//获取当前项目目录string rootPath = FileManager::GetRootDirectory();std::cout << "root: " << rootPath << std::endl;//获取exe文件的目录string exePath = FileManager::GetExeDirectory();std::cout << "exe: " << exePath << std::endl;



0 0
原创粉丝点击