💦 获取工程路径
法一:
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;
结果:
叮~~~~~~~~~~~~~~结束。
戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。 |