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

在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;



发布了159 篇原创文章 · 获赞 149 · 访问量 60万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 撸撸猫 设计师: 设计师小姐姐

分享到微信朋友圈

×

扫一扫,手机浏览