2024年5月2日发(作者:)
C++工作目录的相关知识
今天学习了关于C++工作目录的相关知识
在写c++程序的时候,编译链接后的运行文件一般放到debug目录下面
而当前的工作目录却为程序文件的目录,
因此我们要转换工作目录到debug下,这样才方面把资源文件都放在debug下,才
能方便读写文件
首先,我们获取当前运行文件全名
然后获取其目录
最后用chidr设置当前工作目录。
C++中获取当前文件的全名:
win :GetModuleFileName()
linux : readlink("/proc/self/exe",szBuffer,sizeof(szBUffer));
获取工作目录可以用getcwd(char * workpath,int size);
代码如下:
1 int GetSelfFileName( char szBuffer[], size_t BufferSize)
2 {
3 int nResult = false ;
4 int nRetCode = false ;
5
6 #ifdef _WIN32
7 nRetCode = ( int )GetModuleFileName(NULL, szBuffer, (DWORD)Buff
erSize);
8 if ( ! nRetCode)
9 goto Exit0;
10 #else
11 nRetCode = readlink( " /proc/self/exe " , szBuffer, BufferSize);
12 if ((nRetCode < 0 ) || (nRetCode >= ( int )BufferSize))
13 goto Exit0;
14 szBuffer[nRetCode] = ' 0 ' ;
15 #endif
16
17 nResult = true ;
18 Exit0:
19 return nResult;
20 }
设置当前程序目录为工作目录方法
获取当天程序的全路径,去掉程序名
然后chidr();
1int ExtractFilePath(char *szProgramPath, char *szAppFullFileName)
2{
3 ASSERT(szAppFullFileName);
4 if (!szAppFullFileName)
5 {
6 return false;
7 }
8
9 char *pBUffer = szAppFullFileName;
10 int len = strlen(pBUffer)-1;
11 while(pBUffer[len] != '')
12 {
13 pBUffer[len--] = '0';
14
15 }
16
17 pBUffer[len] = '0';
18 memcpy(szProgramPath,szAppFullFileName,len);
19 return true;
20}
在对文件进行操作时候 要切换根目录


发布评论