有没有从文件完整路径中提取文件名的API? 比如从:d:\My Documents\My Pictures\asdf.gif中提取出:asdf.gif 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有一个api,但是俺忘了名字。不过你的需求自己实现也很简单 LPCTSTR lpFullName = _T("d:\\My Documents\\My Pictures\\asdf.gif");TCHAR *p = _tcsrchr(_T('\\'));ASSERT(p != NULL);p++;这时的p就指向asdf.gif Example/* MAKEPATH.C */#include <stdlib.h>#include <stdio.h>void main( void ){ char path_buffer[_MAX_PATH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; _makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); printf( "Path created with _makepath: %s\n\n", path_buffer ); _splitpath( path_buffer, drive, dir, fname, ext ); printf( "Path extracted with _splitpath:\n" ); printf( " Drive: %s\n", drive ); printf( " Dir: %s\n", dir ); printf( " Filename: %s\n", fname ); printf( " Ext: %s\n", ext );}OutputPath created with _makepath: c:\sample\crt\makepath.cPath extracted with _splitpath: Drive: c: Dir: \sample\crt\ Filename: makepath Ext: .c最后把Filename和Ext合并就可以了 use _splitpath :Example/* MAKEPATH.C */#include <stdlib.h>#include <stdio.h>void main( void ){ char path_buffer[_MAX_PATH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; _makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); printf( "Path created with _makepath: %s\n\n", path_buffer ); _splitpath( path_buffer, drive, dir, fname, ext ); printf( "Path extracted with _splitpath:\n" ); printf( " Drive: %s\n", drive ); printf( " Dir: %s\n", dir ); printf( " Filename: %s\n", fname ); printf( " Ext: %s\n", ext );}OutputPath created with _makepath: c:\sample\crt\makepath.cPath extracted with _splitpath: Drive: c: Dir: \sample\crt\ Filename: makepath Ext: .c CFileDialog 对象中有方法GetFileName(得到文件名)如果自己实现也很简单:CString strFilePath="c:\\temp\\file1.txt";int nPos=strFilePath.ReverseFind('\\');CString strFileName=strFilePath.Left(nPos); VC6.0 判断结果集是否为空 如何安全退出线程 CDC类用得地方多吗? MFC ListCtrl分页显示功能的实现· 如CString str("1 2 3 4 5")此形式如何输出为int的int temp[5]={1,2,3,4,5}; (100分)线程多了好还是少了好?? ListView(ICON样式)如何更换一个Item的图标?(不删除这个Item) CEditView 如何改变字体和背景的颜色? DOS 如何将一个CString 对象强制转化为一个char*型的指针 工程编译的时候提示plg文件被外部改变 关于视图中滚动条的一个小问题。
TCHAR *p = _tcsrchr(_T('\\'));ASSERT(p != NULL);p++;这时的p就指向asdf.gif
#include <stdio.h>void main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT]; _makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" );
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_buffer, drive, dir, fname, ext );
printf( "Path extracted with _splitpath:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}
OutputPath created with _makepath: c:\sample\crt\makepath.cPath extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
最后把Filename和Ext合并就可以了
Example/* MAKEPATH.C */#include <stdlib.h>
#include <stdio.h>void main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT]; _makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" );
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_buffer, drive, dir, fname, ext );
printf( "Path extracted with _splitpath:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}
OutputPath created with _makepath: c:\sample\crt\makepath.cPath extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
如果自己实现也很简单:
CString strFilePath="c:\\temp\\file1.txt";
int nPos=strFilePath.ReverseFind('\\');
CString strFileName=strFilePath.Left(nPos);