[C++] 获取工程路径、解决方案路径和.exe路径

  • 📢博客主页:https://blog.csdn.net/weixin_43197380
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Loewen丶原创,首发于 CSDN,转载注明出处🙉
  • 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨


💦 获取工程路径

法一:

TCHAR pBuf[MAX_PATH];                     //存放路径的变量
GetCurrentDirectory(MAX_PATH, pBuf);      //获取程序的当前目录

法二:支持VS2015以上版本

#include <direct.h>

char *path = NULL;
path = _getcwd(NULL, 1);
puts(path);
delete path;
path = nullptr;

结果:
在这里插入图片描述

💦 获取解决方案路径

#include <direct.h>

char *path = NULL;
path = _getcwd(NULL, 1);
puts(path);

std::string str1(path);
int pos = str1.find_last_of('\\', str1.length());
std::string solutionDir = str1.substr(0, pos);  // 返回解决方案的路径

delete path;
path = nullptr;

💦 可执行文件路径

QString strCurPath;
TCHAR szPhotoPath[MAX_PATH];
GetModuleFileName(NULL, szPhotoPath, sizeof(szPhotoPath));

结果:
在这里插入图片描述

💦 返回不带有可执行文件名的路径

std::string VisionTestFrame::GetProgramDir()
{
	TCHAR exeFullPath[MAX_PATH]; // Full path
	std::string strPath = "";

	GetModuleFileName(NULL, exeFullPath, MAX_PATH); //获取带有可执行文件名路径
	strPath = TCHAR2STRING(exeFullPath);
	int pos = strPath.find_last_of('\\', strPath.length());
	return strPath.substr(0, pos);  // 返回不带有可执行文件名的路径
}
//TCHAR类型转string类型函数
std::string TCHAR2STRING(TCHAR *STR)
{
	int iLen = WideCharToMultiByte(CP_ACP, 0, STR, -1, NULL, 0, NULL, NULL);
	char* chRtn = new char[iLen * sizeof(char)];
	WideCharToMultiByte(CP_ACP, 0, STR, -1, chRtn, iLen, NULL, NULL);
	std::string str(chRtn);
	return str;
}
int main()
{
	std::string str = GetProgramDir(); //获取不带有可执行文件名的路径
}

结果:
在这里插入图片描述

💦 总结

其实我们首先获取解决方案目录,然后通过在解决方案目录后手动添加项目里的子文件夹路径名,就可随意获取整个项目中文中的任何文件或文件夹路径名了。例,我想获得解决方案路径下的task文件夹路径:

char *path = NULL;
path = _getcwd(NULL, 1);
puts(path);

std::string str1(path);
int pos = str1.find_last_of('\\', str1.length());
std::string solutionDir = str1.substr(0, pos);  // 返回解决方案的路径

m_inParam.m_paramName = QString::fromStdString(solutionDir) +"\\task";   
delete path;
path = nullptr;

结果:
在这里插入图片描述
叮~~~~~~~~~~~~~~结束。


戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。
  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶布布

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值