鉴于有时候编程的程序需要对exe当前文件夹的其他文件进行获取,因此需要对exe的文件路径进行操作.
最近做到的程序有这个需要,处理情况如下:
假如执行程序aaa.exe的当前路径(绝对路径)为 D:\FL\debug\aaa.exe ,则可以按以下代码获得aaa.exe的当前文件路路径:
CString path = AfxGetApp()->m_pszHelpFilePath;
CString filename = AfxGetApp()->m_pszExeName;
path = path.Left(path.GetLength() - filename.GetLength() - 4);
CString path = AfxGetApp()->m_pszHelpFilePath;
CString filename = AfxGetApp()->m_pszExeName;
path = path.Left(path.GetLength() - filename.GetLength() - 4);
第一行代码执行后, path的值为 "D:\\FL\\debug\\aaa.exe";
第二行代码执行后, filename的值为 "aaa";
由此,在执行第二行程序后,对path进行左边截取字符串, 可以获得结果: "D:\\FL\\debug\\". (Left()函数中的减去了 filename的长度与4,其中4代表aaa.exe除文件名的其他字符,即点号与后缀的长度.
对于代码中第三行的数字4 直接计算不符合面向对象的原则,后续可以编写一个函数进行计算,因为一般地说,一个文件的后缀不一定是3个字符,有可能为其他长度.