c++中怎么得到当前目录名字(不带路径)?
3个回答
展开全部
CString GetFileNameByFilePath()
{
char pFileName[MAX_PATH] = {0};
//得到程序自身的全路径
DWORD dwRet = GetModuleFileNameW(NULL, (LPWCH)pFileName, MAX_PATH);
CString filepath ;
filepath.Format(_T("%s"),pFileName);
CString Result;
int nPos = filepath.ReverseFind(_T('\\'));
if ( nPos != -1 )
{
CString strTemp;
strTemp = filepath.Right( filepath.GetLength() - nPos - 1 );
Result = strTemp.Left( strTemp.ReverseFind(_T('.')) );
}
return Result; //返回文件名
}
追问
额,能不能解释一下都是什么意思?MAX_PATH应该是一个常量吧,我直接写256应该可以吧?DWORD,dwRet,LPWCH又是什么?CString应该要加头文件吧?大神可不可以直接给一个在vc6.0下可以直接编译的小程序啊,最好尽量带注释,我是初学者,很多东西不是很懂!谢谢..
追答
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;
string getFileName()
{
string strResult;
char czPath[256]={0};
GetModuleFileName(NULL, czPath , 256); //获取全路径
string strPath = czPath;
cout << "文件名(带全路径) : "<<strPath.c_str() << endl;
int nPos = strPath.rfind('\\'); //查找最后一个 \ 出现的位置
if ( nPos != -1 )
{
string strTemp;
//从 nPos + 1 位置开始,截取指定长度字符串
strTemp = strPath.substr( nPos + 1 , strPath.length() - nPos );
cout << "文件名(带后缀名) : "<<strTemp.c_str() << endl;
strResult = strTemp.substr( 0 , strTemp.find('.') );
cout << "文件名(不带后缀) : "<<strResult.c_str() << endl;
}
return strResult; //返回文件名
}
int main( )
{
getFileName();
getchar();
return 0;
}
展开全部
#include <Windows.h>
中使用
DWORD WINAPI GetModuleFileName(
_In_opt_ HMODULE hModule,
_Out_ LPTSTR lpFilename,
_In_ DWORD nSize
);
#include <stdlib.h>
中使用
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );
中使用
DWORD WINAPI GetModuleFileName(
_In_opt_ HMODULE hModule,
_Out_ LPTSTR lpFilename,
_In_ DWORD nSize
);
#include <stdlib.h>
中使用
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
带路径的截取下不就可以了 这么讲究
更多追问追答
追问
关键是我不知道怎么截取!如果能通过某种方法实现也是可以的啊!!关键是你要把那个方法说出来啊!!!
追答
substring +indexof
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询